Wählen Sie einen bestimmten Teil der Ausgabe aus und verwenden Sie ihn zum Umbenennen von Dateien

Wählen Sie einen bestimmten Teil der Ausgabe aus und verwenden Sie ihn zum Umbenennen von Dateien

Ich sortiere gerade Dateien, die ich aus einem defekten Dateisystem wiederhergestellt habe. Sie haben jetzt alle Dateinamen, die ungefähr so ​​lauten: f123123123.xls

Wenn ich die Datei „f123123123.xls“ ausführe, erhalte ich zahlreiche Informationen und manchmal sogar das letzte Speicherdatum.

Beispiel:

./recup_dir.89/f111841280.xls: Composite Document File V2-Dokument, Little Endian, Betriebssystem: Windows, Version 1.0, Codepage: -535, Revisionsnummer: 5, Gesamtbearbeitungszeit: 09:58:37, Zuletzt gedruckt: Mittwoch, 9. September 2015, 11:57:04, Erstellungszeit/-datum: Donnerstag, 3. September 2015, 03:15:36, Zuletzt gespeicherte Zeit/Datum: Montag, 19. Oktober 2015, 14:28:03

Wie kann ich das letzte Speicherdatum auswählen und es verwenden, um meine Datei etwa in „Oct-19-2015.xls“ umzubenennen?

Antwort1

Wir können dazu ein paar Befehle aneinanderreihen. Ich werde dieses Beispiel so einrichten, dass die umbenannten Dateien in ein anderes Verzeichnis geschrieben werden. Sie können sie verschieben, wohin Sie möchten, aber ich persönlich halte sie lieber getrennt, falls es zu ein paar Fehlstarts kommt.

mkdir renamed
for recovered in recup_dir.89/*xls; do
    new_name=$(date +'%b-%d-%Y' -d "$(file "$recovered"| grep -Po 'Last Saved Time/Date:\K[^,]*')")
    if [ -n "$new_name" ]; then
        mv "$recovered" "renamed/$new_name.xls"
    fi
done

Dies führt eine Schleife durch alle XLS-Dateien im Verzeichnis aus (da diese Informationen nicht in der Ausgabe aller Dateien enthalten sind). Für jede Datei wird der fileBefehl ausgeführt und der reguläre Ausdruck im Perl-Stil von GNU grep verwendet, um herauszufinden, wo Last Saved Time/Date:erscheint, und dann nur die Zeit danach abzurufen. Wir verwenden dann den dateBefehl, um diese Zeit genau so neu zu formatieren, wie Sie es wünschen, sodass wir die einzelnen Felder in der Ausgabe nicht groß manipulieren müssen.

Dadurch erhalten wir ein Datum im Format Oct-19-2015und verwenden diesen Wert dann wie erwartet im mvBefehl, aber nur, wenn wir tatsächlich ein Datum zurückbekommen. Wenn Sie nichts zurückbekommen, versuchen Sie nicht, die Datei umzubenennen (nur für den Fall, dass die Dinge mit der vorherigen Befehlskette nicht immer richtig funktionieren).

verwandte Informationen