¿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.