Descubriendo Linux Construyendo a partir de experiencias

20feb/102

En BASH: Cómo hacer un for con nombres de archivo con espacios

Una vez escribí un artículo sobre cómo cambiarle la resolución a un grupo de imágenes y todo se basaba en usar el FOR, el problema es que falla si los archivos tienen algún espacio en su nombre; afortunadamente todo tiene una solución: lo que debemos hacer es crear la variable llamada IFS, en la que se establece cuál es el separador entre un elemento y el otro (por ejemplo un espacio, etc..) a continuación dejo un ejemplo sencillo:

#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for f in *
do
echo "$f"
done
IFS=$SAVEIFS

Si ejecutamos ese comando dentro de una carpeta que tiene archivos cuyos nombres contienen espacios, veremos una lista del contenido (es lo que hace el echo.) De aquí es fácil adaptarlo a nuestras necesidades.

Más ejemplos en Ciberciti

¿Te gustó este artículo?

¡Suscríbete a nuestro feed RSS!

Publicado por aqui_c

Etiquetado con: , , Deja un comentario
  • gonzalo

    buenísimo, siempre puteo en todos los idiomas y pongo todas las combinaciones posibles de comillas y \ y cuando encuentro una que funcione… no tengo la precaución de anotarlo, así que la siguiente vez, puteo de nuevo.
    Pero esto va al machete porque es infinitamente mas fácil. Gracias, totales

  • pau

    Hola! muy bueno tu sitio…yo tmb aqui empezando…
    Tengo un problemita que quizas pudas ayudarme
    tengo una carpeta dnd continuamente se graban imagenes con el formato : año mes dia hora minuto segundo.jpg por ejemplo 1012152030.jpg que seria el año 2010 mes 12 diciembre dia 15 hora 20:30 y lo que quiero hacer es que a medidas q que vayan creando las vaya metiendo en una carpeta correspondiente al dia, pero automatico
    Lo que hago hasta ahora manualmente es
    mkdir 12
    mv 1012*.jpg 12
    y asi voy moviendo todos los dia los archivos…. ¿Se te ocurre como puedo automatizar esto? Gracias Saludos