Tengo un script que me está dando algunos problemas, sé que tengo que rehacerlo recursivamente pero estoy teniendo algunos problemas. El script debe renombrar todos los archivos y carpetas de una carpeta determinada eliminando los caracteres especiales como $-,)(! y sustituyendo " " por "_"
Aquí está la pieza que necesito rehacer:
# Rename directories
find "$ORIG_DIR" -name "*" -type d| while read dname
do
NEW_DIR=`echo "$dname" |sed -E 's/^[ \t]*//g; s/[ \t]*$//g; s/\./_/g; s/\,/_/g; s/ /_/g'`
# Rename files
find "$ORIG_DIR" -name "*" -type f | while read fname
do
NEW_FNAME=`echo "$fname" |sed -E 's/^[ \t]*//g; s/[ \t]*$//g; s/\./_/g; s/(.*)_/\1\./; s/\,/_/g; s/ /_/g'`
if [ -e $NEW_FNAME ]
then
echo "$NEW_FNAME already exists. Not replacing $fname"
else
echo "Replacing $fname with $NEW_FNAME"
mv "$fname" $NEW_FNAME
fi
done
if [ -e $NEW_DIR ]
then
echo "$NEW_DIR already exists. Not replacing $dname"
else
echo "Replacing $dname with $NEW_DIR"
mv "$dname" $NEW_DIR
fi
done
END