Find, bucles for y espacios en Bash
Si en la línea del CLI o un script de este tipo:
for LINEA in $(find _directorio_ _que_buscar_ ) do echo $LINEA done
nos aparece uno o más espacios no nos saldrá la salida como esperamos
ya que el for interpreta el espacio como un separador con lo cual en vez de tener un listado como este (es un mero ejemplo):
linea1 linea2 linea 3 linea4
obtendremos un listado como este:
linea1 linea2 linea 3 linea4
que está claro no es lo que buscamos
.
Para solucionar esto basta con añadir una simple línea delante del For para que “ignore” los espacios y obtengamos el listado como queremos:
export IFS=$'\n' for LINEA in $(find _directorio_ _que_buscar_ ) do echo $LINEA done
Articulos similares:
- iTerm: poner título a las pestañas (4 agosto 2008)
- Comparar dos directorios en Bash (14 enero 2009)
- Bash: bucles (for, while, until) (3 agosto 2008)
- Bash: convertir un PDF a JPG (3 abril 2009)
- Hacer un TAR remoto vía SSH (24 diciembre 2008)
Publicado: 21 de marzo de 2008 | Categorias: Sistemas → Bash
Revisado: 15 de febrero de 2010 | etiquetas: Bash
Revisado: 15 de febrero de 2010 | etiquetas: Bash

































Muy bueno tu weblog, creo que tenemos inquietudes y formas de pensar parecidas. Acabo de llegar a él a través de una entrada en el blog de Eduardo Collado.
Añadir que esta solución acerca del IFS a mí me resultó menos compatible (creo que fallaba con ksh) que otra que utilizo más a menudo:
export IFS=”
”
que funciona (al menos) en bash, sh y ksh.
Saludos y enhorabuena.
Pere Moltó.