Escape del espacio, p. Spring\ 2011
, o utilice comillas, p. 'Spring 2011'
. En el futuro, normalmente es una mala idea usar nombres de archivos con espacios en ellos en cualquier *NIX.
Si tienes rename
, puedes usar esto:
rename ' ' '_' [filenames...]
Si su máquina tiene el comando de cambio de nombre, esto cambiará todos los espacios a guiones bajos en todos los archivos/directorios en el directorio de trabajo actual:
rename 's/ /_/g' *
Si no tienes rename
o prefiere usar solo el shell:
for f in *\ *; do mv "$f" "${f// /_}"; done
Desglosado:
*\ *
selecciona todos los archivos con un espacio en su nombre como entrada para elfor
círculo. El patrón*X*
selecciona todos los archivos conX
en su nombre, y para el espacio de carácter especial, tenemos que escapar con una barra inclinada para que bash no lo trate como si estuviera separando diferentes argumentos.- Las comillas alrededor de
"$f"
son importantes porque sabemos que hay un espacio en el nombre del archivo y, de lo contrario, aparecería como más de 2 argumentos paramv
. ${f//str/new_str}
es una función de sustitución de cadenas específica de bash. Todas las instancias destr
se reemplazan connew_str
.