GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo reemplazar un carácter con otro en todos los nombres de archivo de los directorios actuales?

¿Cómo se cambia el nombre de todos los archivos/subdirectorios en la carpeta actual?

Digamos que tengo muchos archivos y subdirectorios que tienen espacios y quiero reemplazar todos los espacios con un guión bajo.

File 1
File 2
File 3
Dir 1
Dir 3

debe ser renombrado a

File_1
File_2
File_3
Dir_1
Dir_3

Respuesta aceptada:

Si también necesita cambiar el nombre de los archivos en los subdirectorios, y su find admite -execdir predicado, entonces puedes hacer

find /search/path -depth -name '* *' 
    -execdir bash -c 'mv -- "$1" "${1// /_}"' bash {} ;

Gracias a @glenn jackman por sugerir -depth opción para find y para hacerme pensar.

Tenga en cuenta que en algunos sistemas (incluidos los GNU/Linux), find puede fallar al encontrar archivos cuyo nombre contiene espacios y también secuencias de bytes que no forman caracteres válidos (típico con archivos multimedia con nombres con caracteres que no son ASCII codificados en un juego de caracteres diferente al de la configuración regional). Establecer la configuración regional en C (como en LC_ALL=C find... ) resolvería el problema.


Linux
  1. Encuentra archivos y directorios en Linux con el comando de búsqueda

  2. ¿Cómo mover todos los archivos (incluidos los ocultos) de un directorio a otro?

  3. ¿Cómo encontrar todos los archivos que terminan en .rb con Linux?

  4. ¿Cómo encontrar los directorios más grandes o los archivos más grandes?

  5. Cómo reemplazar todo el contenido de una carpeta con otra

Cómo encontrar archivos en Linux con el comando Buscar

Cómo encontrar archivos con el comando fd en Linux

¿Cómo copiar un archivo de otro directorio al actual?

Cómo encontrar archivos con docenas de criterios con el comando Bash Find

¿Encontrar directorios con todos los archivos dentro de más de X?

¿Cómo averiguar los principales directorios o archivos que consumen espacio?