Skip to main content

This is my blog, more about me at marianoguerra.github.io

🦋 @marianoguerra.org 🐘 @marianoguerra@hachyderm.io 🐦 @warianoguerra

iterar por directorios con espacios en un shell script

la vida nos sonríe, nos sentimos cual neo escribiendo comandos en el shell a diestra y siniestra, estamos a punto de para las balas con las manos, corremos:

for i in $(ls); do echo $i; done

y nuestra ilusión hacker se nos cae a pedazos al ver que cada palabra de un directorio o archivo con espacios sale en una linea nueva.

no desesperaos (?) he aquí la solución.

reproduzcamos el error para después arreglarlo:

$ mkdir -p "t/folder 1" "t/folder 2" "t/folder 3 with more spaces"
$ cd t
$ for i in $(ls); do echo $i; done
folder
1
folder
2
folder
3
with
more
spaces



vamos de nuevo ahora con la solución:

$ IFS="$(echo -e "\n\r")"
$ for i in $(ls); do echo $i; done
folder 1
folder 2
folder 3 with more spaces

y todos felices (incluso carlin calvo que puede seguir hackeando literalmente a dos manos en sus computadoras auspiciadas por fravega)