Move-Befehl in Linux zum Verschieben mehrerer Dateien mit derselben Erweiterung, aber unterschiedlichem Jahr

Move-Befehl in Linux zum Verschieben mehrerer Dateien mit derselben Erweiterung, aber unterschiedlichem Jahr

Ich habe etwa 500 TXT-Dateien aus den Jahren 2013 bis 2015 in einem Ordner abgelegt und muss alle Dateien aus den Jahren 2013 und 2014 in einen anderen Ordner verschieben.

Antwort1

Unter der Annahme, dass „aus dem Jahr 2013 und dem Jahr 2014“ „mit Änderungszeitpunkt im Jahr 2013/2014“ bedeutet, können Sie die Liste der Dateien mit folgendem Ergebnis erhalten:

stat -c '%y %n' * | grep -v '^2015' | cut -d " " -f 4-

Was dies bewirkt:

stat -c '%y %n'

Letzte Änderungszeit und Dateinamen drucken

*

Von allen Dateien im Ordner

grep -v '^2015'

Ausgeschlossen sind die von 2015

Schnitt -d " " -f 4-

Entfernen Sie abschließend den Zeitstempel und lassen Sie nur den Dateinamen übrig (vorausgesetzt, Sie haben keine seltsamen Dateinamen mit eingebetteten Zeilenumbrüchen).

xargsSie können die Dateien dann mit einem Tool wie oder sogar einer For-Schleife (wenn die Zeichen dies zulassen) verarbeiten , um sie in den gewünschten Ordner zu verschieben.

Antwort2

Wenn diese Dateien das Jahr im Namen haben, ist es ganz einfach. Wenn Sie mit dem Terminal vertraut sind, finden Sie hier ein Beispiel.

Angenommen, Sie möchten alle Dateien aus dem Jahr 2013 in einen Ordner namens „2013files“ verschieben und ihre Namen lauten etwa „2013 stuff.txt“ oder „Januar 2013.txt“.

Gehen Sie zu Ihrem Ordner

cd /path/to/your/folder/

Erstellen Sie den Ordner, in den Sie Ihre Dateien verschieben möchten

mkdir 2013files

Verschieben Sie dann alle Dateien mit „2013“ im Namen

rename  ./*2013*.txt  ./2013files

WICHTIG: Verwenden Sie vor dem Befehl „Umbenennen“ stattdessen „cp“, um sicherzustellen, dass Sie nichts vertippt haben. Andernfalls erhalten Sie am Ende möglicherweise nur eine Datei.

WICHTIG (2): Sichern Sie Ihre Dateien immer vor allem

verwandte Informationen