Ich muss alle Sonderzeichen aus Dateinamen entfernen.
So etwas wie, find . -mindepth 1 -exec rename 's/[^a-zA-Z0-9_-]//g' {} \;
aber wenn der Befehl umbenennen dir ben benennt, wird ein Druckfehler über keine solche Datei oder kein solches Verzeichnis (alter Verzeichnisname) ausgegeben.
Und ich muss Punkt zulassen.
Basierend auf der Antwort von @ matias-barrios habe ich meine eigene Lösung geschrieben:
#!/bin/bash
fileList=$(find . -mindepth 1)
echo "$fileList" | awk '{print length, $0}' | sort -rn | cut -d" " -f2- |
while read path; do
dirName=$(echo "$path" | rev | cut -d'/' -f2- | rev)
fileName=$(echo "$path" | rev | cut -d'/' -f1 | rev)
newFileName="$dirName/$(echo "$fileName" | tr -C -d 'a-zA-Z0-9-_.')"
if [ "$path" = "$newFileName" ]; then continue; fi;
echo "From: $path"
echo "To: $newFileName"
mv "$path" "$newFileName"
done
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen