Imprimir esta página

Recorrer un directorio que tiene ficheros con espacios en blanco en el nombre en un script

04 Noviembre 2018 by 2 comentarios Programación 15976 Views
Valora este artículo
(0 votos)

Cuando recorremos un directorio con ficheros cuyo nombre puede que contenga espacios en blanco (algo muy habitual si descargamos vídeos con youtube-dl), no funciona el típico:

#!/bin/bash

directorio="midirectorio"

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

 

Ni siquiera serviría entrecomillar el $i, ya que no le llegaría el nombre del fichero al recortarse en el for.

La solución es cambiar antes de hacer el for el separador de campo con:

IFS='
'

Quedando el script así:

#!/bin/bash


directorio="midirectorio"
IFS='
'

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

 

Guardad este artículo en favoritos. Es una de esas piedras en las que todos tropezamos una y otra vez. A menos yo. Pero ya tengo la chuleta y así ya no tendré que mirar una y otra vez scripts antiguos.

 

 

Información adicional

2 comentarios

  • juanito
    juanito Jueves, 20 Mayo 2021 02:43

    ¡NO SIRVE!

  • Josu
    Josu Domingo, 17 Septiembre 2023 13:13

    Muchas gracias
    Me ha resultado útil para imprimir en PDF todos los archivos de una carpeta. En mi caso el script ha quedado así:

    #!/bin/bash
    dirsource="/ruta/de/mi/carpeta"
    #con IFS=' y el siguiente ' hacemos que se coma los espacios en los nombres de los archivos
    IFS='
    '
    for i in $(ls $dirsource)
    do

    #echo $i
    lpr -P PDF $i
    done