Saya memiliki skrip yang memberi saya beberapa masalah, saya tahu bahwa saya harus melakukannya kembali secara rekursif tetapi mengalami masalah. Skrip harus mengganti nama semua file dan folder dalam folder yang diberikan dengan menghapus karakter khusus seperti $ -,) (! Dan mengganti "" dengan "_"
Inilah bagian yang harus saya lakukan kembali:
# 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
perintah akan selalu melintasi seluruh pohon direktori (ganti fungsi di dalamnya dengan pernyataan gema untuk melihat apa yang terjadi).