Iterar ficheros con espacios en el nombre [BASH]

bucle bash inline con espacios en el nombre

Cada cierto tiempo, al crear scripts en Bash (aunque cada vez utilizo más Python para estos “menesteres”) me suelo encontrar con la necesidad de recorrer un listado de ficheros en disco que incluyen espacios y/o caracteres especiales en el nombre.

Dejo aquí esta nota para la próxima vez que me de problemas utilizar el bucle “for” desde la terminal 😉

A la hora de recorrer ficheros en disco, se suele utilizar el bucle “for” pero, si hay espacios en el nombre

ejemplo de listado de ficheros con espacios en el nombre

lo má sencillo es hacerlo del siguiente modo:

for f in *.log; do echo "Fichero: $f"; done

Donde:

  1. *.log filtrará todos los ficheros con extensión .log (en la imagen de arriba se ve que he usado varios ficheros con espacios en el nombre y distinta extensión). Puedes cambiar la extensión .log (por la que necesites) o quitarla directamente (* para procesar todos los ficheros en el directorio)
  2. f es la variable que utilizaremos para recorrer los distintos ficheros del directorio
  3. $f es para mostrar el nombre del fichero dentro de la cadena “Fichero: xxxxx”
  4. Se usa “;” como separador de comandos buscando poder procesar los ficheros utilizando una única línea y no tener que crear un script en Bash.

filtrar ficheros en la terminal de comandos

Conclusión

Truco realmente sencillo para operar sobre los ficheros (tengan o no espacios en el nombre) de determinado directorio desde la línea de comandos.

Y tú…

  • ¿Cómo sueles lidiar con los espacios en Bash?
  • ¿Eres de usar el bucle for o el comando find?
  • ¿Conocías esta posibilidad?

4 comentarios en “Iterar ficheros con espacios en el nombre [BASH]

  1. Me gustan mucho estos truquillos con Bash, aunque se me hace un lenguaje algo dificil. La verdad es que el modulo OS de python se me hace muchísimo más fácil de manejar para esta clase de tareas y respecto a velocidad de ejecución a menos que estés trabajando con un lote enorme, es inapreciable.

    Con esto y un mv, ejercicios para renombrar archivos automáticamente!!

    • Como comenté, cada día uso más Python (por potencia y portabilidad a otras plataformas) pero, hay veces que, con una línea de código (como la del ejemplo) y sin tener que editar un script (con más líneas de la cuenta) resuelvo problemas como el planteado 😉

      La idea de renombrar no está mal pero soy más de PyRenamer (realmente espectacular para esos menesteres)

      Gracias por compartir impresiones Zetto

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s