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!

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top