Ich habe Dateien mit dem Namen "12. 2017-04-11 063118.jpg" und "123. 2016-09-05 115236.jpg". Die Zahl links vom "." zählt wie ein Index von 1 bis 1400.
Wie kann ich das Erstellungsdatum und die Erstellungszeit gemäß der Angabe im Dateinamen für alle 1400 Dateien im Ordner einstellen? Ich weiß, dass der Befehl touch -t das Erstellungsdatum ändert, aber ich weiß nicht, wie ich die Datums- / Zeitinformationen aus dem Dateinamen extrahieren und in einen Befehl einfügen kann, sodass dies automatisch für alle Dateien durchgeführt wird.
Ich weiß aus einem anderen Thread, dass das untenstehende funktionieren sollte. Aber ich weiß nicht, wie ich die Textkonvertierung optimieren soll, um sie korrekt auf meine Dateinamenskonvention anzuwenden.
for f in *; do
t=$(echo $f | sed -E 's/([A-z]*-)|([ ,;])|(\..*)//g' | sed -E 's/(.*)(..)/\1.\2/')
touch -t $t "$f"
done
Der obige Code funktioniert, wenn meine Dateinamenskonvention wie folgt lautet: "clip-2014-01-31 18; 50; 15.mp4". Ich habe jedoch ein anderes Format: "12. 2017-04-11 063118.jpg" und "123. 2016-09-05 115236.jpg". Kann jemand den sed
Funktionsbefehl zwicken, um die Umwandlung in das korrekte Format für Note zu verarbeiten?
bare *
(glob) listet jedes Dateisystemobjekt im Verzeichnis auf. Denken Sie, dass die Verwendung*.jpg
eine bessere Wahl wäre?