Cómo eliminar los espacios de los nombres de archivos
En muchas ocasiones te habrás topado con nombres de ficheros y directorios que tienen espacios intermedios en sus nombres, especialmente aquellos que provienen de Windows. Estos espacios son en muchas ocasiones molestos, especialmente para trabajar desde el shell, ya que necesitas identificarlos para que no sean tratados como nombres u opciones de un comando separadas. Por eso, en este tutorial vamos a ver algunas formas de eliminar los espacios de forma automatizada.
Además, también veremos cómo se pueden usar estos ficheros o directorios con nombres que tienen espacios sin que te lance un error.
Cómo usar ficheros y directorios con espacios
Para tratar de escapar de los espacios de los nombres de los ficheros y directorios en el terminal de Linux, puedes hacerlo de estas formas:
- Incluyendo «» (comillas dobles) en parte de la ruta donde haya espacios o en toda ella. Por ejemplo:
cd "nombre con espacio"/
- Usando un carácter \ antes de cada espacio. Por ejemplo:
nano nombre\ con\ espacio.txt
De estas formas, lograrás eludir estos molestos espacios. Ahora bien, para no tener que volver a usar estas opciones que pueden ser más incómodas, podrás seguir los siguientes pasos…
Cómo eliminar los espacios de los nombres
Ahora bien, puedes usar varios métodos para que estos espacios en nombres dejen de ser un problema para siempre. Si tienes gran cantidad de nombres con espacio, no es lógico hacerlo uno a uno, pero se puede automatizar estas tareas para eliminar o sustituir los espacios:
- Usar el comando rename para ello. Por ejemplo, el primero de estos comandos elimina los espacios de todos los .txt, mientras que el segundo lo hace en todos los archivos dentro del directorio actual:
rename ‘s/\s/_/g’ ./*.txt
rename ‘s/\s/_/g’ ./*.*
- Usar find para reemplazar todos los nombres que tengan espacios, sustituyendo estos por _. Por ejemplo, hacerlo con todos los .txt del directorio actual o de todo el FS:
find . -type f -name "* *.txt" -exec bash -c 'mv "$0" "${0// /_}"' {} \; **find / -type f -name "* *.txt" -exec bash -c 'mv "$0" "${0// /_}"' {} \;