Tengo varios archivos en una carpeta y quiero reemplazar cada carácter de espacio en todos los nombres de archivo con guiones bajos. ¿Cómo puedo conseguir esto?
96
Esto debería hacerlo:
for file in *; do mv "$file" `echo $file | tr ' ' '_'` ; done
1 - foo.jpg
y mi carpeta ya la tenía1.jpg
.for file in *; do mv "$file" $(echo $file | tr ' ' '_') ; done
*
aPATH_TO_YOUR_DIRECTORY
.Prefiero usar el comando 'renombrar', que toma expresiones regulares de estilo Perl:
Puedes hacer un ensayo con la bandera -n:
fuente
rename " " "_" *
rename
no está disponible en OSX, parece.rename
está disponible.Usa sh ...
Si desea probar esto antes de apretar el gatillo, cambie
mv
aecho mv
.fuente
Si usa bash:
fuente
mv --help' for more information. mv: when moving multiple files, last argument must be a directory Try
mv --help 'para obtener más información.mv --help' for more information. mv: missing file argument Try
mv --help 'para obtener más información. mv: falta el argumento del archivo. Pruebemv --help' for more information. mv: missing file argument Try
mv --help 'para obtener más información.¿Qué sucede si desea aplicar la tarea de reemplazo de forma recursiva ? ¿Cómo lo harías tú?
Bueno, yo mismo encontré la respuesta. No es la solución más elegante (también intenta cambiar el nombre de los archivos que no cumplen con la condición) pero funciona. (Por cierto, en mi caso necesitaba cambiar el nombre de los archivos con '% 20', no con un guión bajo)
fuente
Intente algo como esto, asumiendo que todos sus archivos eran .txt:
fuente
tr --help' for more information. mv: missing file argument Try
mv --help 'para obtener más información.Aquí hay otra solución:
fuente
Cotiza tus variables:
Elimine el "eco" para hacer el cambio de nombre real.
fuente
\'1130 lake micigan view.jpg\'': No such file or directory mv: cannot stat
\ '1130_1_bedroom_floor_plan.jpg \' ': No existe tal archivo o directorio mv: can't stat\'1130_BedPicture_8.jpg\'': No such file or directory mv: cannot stat
\' 1130_diningroom_table.jpg \ '': No existe tal archivo o directorioLa forma más fácil de reemplazar una cadena (carácter de espacio en su caso) con otra cadena en
Linux
es usandosed
. Puedes hacerlo de la siguiente maneraEspero que esto ayude.
fuente
Creo que su respuesta está en Reemplazar espacios en nombres de archivos con guiones bajos .
fuente
Para cambiar el nombre de todos los archivos con una
.py
extensión, use,find . -iname "*.py" -type f | xargs -I% rename "s/ /_/g" "%"
Salida de muestra,
fuente