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 elforcírculo. El patrón*X*selecciona todos los archivos conXen 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 destrse reemplazan connew_str.