J'ai un script qui me donne quelques problèmes, je sais que je dois le refaire de manière récursive mais j'ai des problèmes. Le script doit renommer tous les fichiers et dossiers d’un dossier en supprimant les caractères spéciaux tels que $ -,) (! Et en remplaçant "" par "_".
Voici le morceau que je dois refaire:
# 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
find
les commandes traverseront toujours l’ensemble de l’arborescence (remplacez la fonctionnalité à l’intérieur par des instructions echo pour voir ce qui se passe).