Umbenennen von Dateien basierend auf sortierten Erstellungsdatum?
-
19-09-2019 - |
Frage
ich ein Verzeichnis mit Dateien mit zufälligen Namen gefüllt habe. Ich möchte in der Lage sein, sie ‚1 Datei‘ umbenennen ‚Datei 2‘ usw. nach der Reihenfolge, dh Dateierstellungsdatum. Ich konnte einen kurzen Python-Skript schreiben, aber dann würde ich nichts lernen. Ich habe mich gefragt, ob es ein kluger 1 Zeilenbefehl, die dieses Problem lösen können. Wenn jemand mich in die richtige Richtung zeigen könnte.
Ich bin mit zsh.
Danke!
Lösung
Für zsh
:
saveIFS="$IFS"; IFS=$'\0'; while read -A line; do mv "${line[2]}" "${line[1]%.*}.${line[2]}"; done < <(find -maxdepth 1 -type f -printf "%T+ %f\n"); IFS="$saveIFS"
Für Bash (beachten Sie die Unterschiede in der Option read
und nullbasierte Indizierung statt einer Basis):
saveIFS="$IFS"; IFS=$'\0'; while read -a line; do mv "${line[1]}" "${line[0]%.*}.${line[1]}"; done < <(find -maxdepth 1 -type f -printf "%T+\0%f\n"); IFS="$saveIFS"
Diese Umbenennen von Dateien, indem Sie die Änderungen am zu Beginn des ursprünglichen Dateinamen, die Namenskollisionen zu verhindern, zurückgehalten wird.
Ein Dateiname daraus resultierender könnte wie folgt aussehen:
2009-12-15+11:08:52.original.txt
Da ein Null als interner Feldseparator (IFS) verwendet wird, die Dateinamen mit Leerzeichen erhalten werden sollen.