Ich habe eine Reihe von Dateien mit Namen wie MOV001.mpg, MOV002.mpg usw. Sie haben alle unterschiedliche Datums- und Uhrzeitangaben.
Wie kann ich sie umbenennen, sodass sie beispielsweise 2012 08 05 13 45 33 MOV001.mpg, 2012 09 02 23 45 07 MOV002.mpg usw. werden?
Mit anderen Worten: Wie kann ich die Datums- und Zeitinformationen aus den Dateien extrahieren, die ich umbenenne?
Vielen Dank im Voraus.
Antwort1
Ungetestet:
for f in *.mpg; do
mv "$f" "$(stat -f "%m" -t "%Y %m %d %H %M %S" "$f") $f"
done
stat -f "%m"
sollte das letzte Änderungsdatum der Datei anzeigen und -t "%Y %m %d %H %M %S"
das Datum entsprechend Ihren Anforderungen formatieren.
Antwort2
Die ursprüngliche Frage gibt an, dass die resultierenden Dateien auch mit einer Dateierweiterung enden. Um dies auf portable Weise zu tun, greifen Sie in Bash auf die Erweiterung aus dem integrierten /path/to/file.ext
with ${f##*.}
zu, was zu einem Einzeiler führt:
for f in *.FOO; do mv "$f" "$( /usr/bin/stat -f "%Sm" -t "%Y%m%d_%H%M%S" ).${f##*.}" ; done
und ein Codeblock von
for f in *.FOO ; do
mv "$f" "$( /usr/bin/stat -f "%Sm" -t "%Y%m%d_%H%M%S" ).${f##*.}"
done
Wenn Sie also FOO ändern (z. B. von *.mpg in *.png), sind die Ausgabedateinamen sinnvoll.