Hola a todos, Tengo un problema que me ha llevado toda la tarde y no consigo verlo. Es probable que sea una g...llez y que no lo vea por el cansancio. Antes de apagar el ordenador os lo dejo en la lista por si a alguien se le enciende la luz. Tengo un directorio con ficheros provenientes de windows que tienen espacios en el nombre. Mi intención es cambiar cada espacio por un guión bajo. Por ejemplo, Fichero 1.txt cambiarlo a Fichero_1.txt. Tengo del orden de 200 ficheros que responden al patron Fichero n.txt. He investigado un poco por ahí y he decidido quedarme con tr. Diseñé el script: ----------------------------- #!bin/bash SOURCE_DIR="/home/zutanito/Desktop/prueba" clear mkdir $SOURCE_DIR cd $SOURCE_DIR for i in *txt ; do j=`echo $i | tr ' ' '_'` ; echo $i; echo $j; cp $i $j ; done ----------------------------- La salida de la consola es: ----------------------------- list corp dir 1.txt list_corp_dir_1.txt cp: target «list_corp_dir_1.txt» is not a directory ----------------------------- como se puede ver, las variables $i y $j son interpretadas perfectamente, pero en el cp $i $j; falla todo. No entiendo porqué en la consola puedo hacer manualmente cp list\ corp\ dir\ 1.txt list_corp_dir_1.txt y funciona perfectamente mientras que en el script no es posible. En la desesperación intenté en la consola find /home/zutanito/prueba/ -name "*txt" -exec echo {} | tr ' ' '_' {} \ ; pero ni en broma ya que supongo habrá algo más de sintaxis en la línea. Gracias a todos y un abrazo, E Garrido