So entfernen Sie alle Dateien, die vor n Minuten unter Linux erstellt wurden

13

Ich denke, in den meisten Fällen erhalten wir beim Extrahieren eines Teerarchivs ein Verzeichnis mit demselben Namen wie die Archivdatei, jedoch mit unterschiedlichem Suffix. Aber in einem unglücklichen Fall, wie ich ihn heute getroffen habe, finde ich nach dem Extrahieren eines Tarballs viele Dateien im Arbeitsverzeichnis, was ein Ärgernis ist.

Was ich von Ihnen lernen möchte, ist Folgendes: Wie kann ich diese neu erstellten Dateien verschieben? Ich weiß, dass es dort ein ausgefallener "find plus rm" -Ansatz sein sollte, aber ich weiß nicht genau, wie.

HaiYuan Zhang
quelle

Antworten:

23

Ich frage mich, was ich man findsagen würde. Dann können Sie sogar Ihre Bemühungen zeigen.

find . -type f -cmin -1
find . -type f -cmin -1 -delete
  • Mit -type fwird angegeben, dass nur reguläre Dateien ausgewählt werden.
  • Der -cmin -1Status der Datei wurde zuletzt in weniger als der letzten (einer) Minute geändert.
  • Das -deleteFlag weist find an, alle Ihre Elektronikdateien im bekannten Universum oder ähnliches zu löschen. Seien Sie also vorsichtig, wenn Sie es verwenden.

Zunächst einen Testlauf zu tun , ohne die -deleteFlagge wird dringend empfohlen.

Hinweis -deleteist eine nicht tragbare Erweiterung.

Ich empfehle, die findManpage zu lesen, bevor Sie sie verwenden, da sie verschiedene Fallstricke und Warnungen abdeckt, die in Ihrer Situation zutreffen können.

mctylr
quelle
Nett! -delete sieht einfacher aus als -exec rm {} \;
PJ Brunet
+1 für die Zeit, um die Optionsoptionen zu erklären
Jad S
5
find . -mtime -60s -exec mv {} /dest/dir \;

Findet jede Datei im aktuellen Verzeichnis (und in den Unterverzeichnissen), die in den letzten 60 Sekunden geändert wurde, und verschiebt sie nach / dest / dir.

Skarface
quelle
3
Sorgfältige, extrahierte Archivdateien können das ursprüngliche Änderungsdatum beibehalten. Am besten die Erstellungszeit nutzen.
Cem Kalyoncu
@CemKalyoncu großer Punkt.
Skarface
0

Die einfachste Möglichkeit (vorausgesetzt, Sie haben keine grafische Oberfläche) ist die Verwendung von mc . Es kann Dateien nach Datum sortieren.

Sie können auch die Dateien, die sich im tar befanden, über die Befehlszeile löschen:

> rm $( tar -ztf mytar.tar.gz )

(-ztf) steht für tar.gz-Dateien. Sie können (-tf) für normale Teere oder (-jtf) für tar.bz2-Dateien verwenden.

Wenn die Liste der Dateien zu groß ist und der obige Befehl drosselt, können Sie xargs verwenden:

> tar -ztf mytar.tar.gz | xargs rm
Sonnig
quelle
wow, mein schlechtes - ich habe die Frage nicht wirklich gelesen - Sie müssen sie verschieben, nicht löschen (bitte, korrigieren Sie den Titel, es ist irreführend). Ich denke, Sie können sie immer noch löschen, dann ein neues Verzeichnis erstellen und dort entpacken :). Immerhin bewegen = kopieren + löschen.
Sunny