Ich habe den folgenden Befehl, den ich auf Kleinbuchstaben Dateien/Verzeichnisse ausführen, ersetzen. mit _ und verschiedenen anderen Manipulationen. Das Problem dabei ist, dass es versucht, die Verzeichnisse zuerst umzubenennen und dann die darunter liegenden Dateien nicht zu finden. Gibt es eine Möglichkeit, alle Dateien in einem Verzeichnis zuerst umzubenennen, dann das Verzeichnis selbst rekursiv? z.B.Linux Dateien vor den Verzeichnissen umbenennen
- directory1
- file1
- file2
- directory1
- file1
- file2
- directory2
- file1
- directory2
- file1
- file2
Mein Code ist
Hierwhile IFS= read -rd '' entry; do
entry="${entry#./}" # strip ./
if [[ -d $entry ]]; then
rename 'y/A-Z/a-z/; s/ /_/g; s/_-_/-/g; s/sometext//g; s/_extras/-extras/g' "$entry"
else
rename 'y/A-Z/a-z/; s/\.(?=.*\.)/_/g; s/ /_/g; s/_-_/-/g; s/sometext//g; s/_extras/-extras/g' "$entry"
fi
done < <(find . -iname '*' -print0)
Sie müssen Rekursion verwenden, um das in einer Aufnahme zu erreichen oder Dateien nur zuerst umzubenennen, dann die Verzeichnisse – dganesh2002
Ich würde 'find' verwenden, um eine Liste zu erstellen und diese nach unten bezüglich Verzeichnis/Dateitiefe zu sortieren. – yacc