Problema con los espacios en directorios en un script
Simón
jmsimonr en gmail.com
Vie Jun 22 18:35:21 BST 2007
Hola,
Estoy haciendo un script y quiero obtener el listado de los ficheros
que hay en un directorio, para luego procesarlo uno a uno.
El problema me lo encuentro cuando selecciono un directorio con
espacios, pongo los ejemplos que me dan problemas:
ORIGEN=${DIR_ORIGEN%/}/*.mp3
if [ $(ls -1 $ORIGEN 2>/dev/null | wc -l) -eq 0 ]; then
error=1
fi
Esto lo hago para verificar que en determinado directorio existen
ficheros mp3.
for fichero in $ORIGEN
do
echo $fichero
done
Esto tampoco funciona si el directorio contiene espacios.
Una posible solución es redefinir la variable IFS, pero es que hay en
otros sitios (dentro del mismo script) que me interesa que IFS valga
espacios y además de ser un coñazo estar cambiando el valor de la
variable una y otra vez, esto da error en la instrucción dentro de la
condición del primer if porque aunque para ls me va bien ese IFS pero
para el comando wc no le va bien.
Bueno, que me estoy armando la picha un lío y no sé como solucionar
esto.
También he pensado en usar expresiones regulares, pero no consigo que
funcione.
No hay un comando para que escape los caracteres "especiales" dentro de
una cadena?
Alguien sabe una solución?
Un saludo,
________________________________________________________________________
Simón
Usuario Linux nº 413.257 (http://counter.li.org/)
Usuario Ubuntu nº 11312 (http://ubuntucounter.geekosophical.net/)
Más información sobre la lista de distribución ubuntu-es