Wie entferne ich Dateien, die zwischen bestimmten Daten geändert wurden?

12

Wie im Thema: Ich möchte Dateien in einem Verzeichnis entfernen, die in einem bestimmten Datumsbereich geändert wurden. Wie kann ich das machen ?

Patryk
quelle

Antworten:

18

Der Befehl GNU findist der richtige Weg. Um beispielsweise alle Dateien im aktuellen Verzeichnis zwischen dem 1. und 5. August zu löschen, können Sie den folgenden Befehl verwenden

find . -maxdepth 1 -type f -newermt 2011-08-01 ! -newermt 2011-08-06 -delete

Es ist besser, den Befehl ohne die -deleteAktion auszuführen , um zuerst die Liste der interessierten Dateien anzuzeigen (ein guter Ersatz könnte sein -ls, dass eine ls-ähnliche Liste erstellt wird).

Durch Entfernen der -maxdepth 1Spezifikation werden auch alle Unterverzeichnisse durchlaufen.

Sie können beispielsweise auch Stunden angeben

find . -maxdepth 1 -type f -newermt '2011-08-01 10:01:59' \
                         ! -newermt '2011-08-06 23:01:00' -delete

Seien Sie gewarnt, keine einfachen Anführungszeichen zu entfernen, die Leerzeichen zwischen Datum und Uhrzeit schützen.

Das Zeichen !ist eine Negation, es sollte gelesen werden: neuer als dieses Datum, aber nicht neuer als dieses andere Datum.

Enzotib
quelle
Danke für die Antwort. Kann ich auch etwas verwenden, um den Stundenbereich zu wählen? Und was ist das '!' benutzt für ?
Patryk
Das !ist ein nicht. In diesem Beispiel: Nicht neuer als der 06.08.2011.
con-f-use
@lordmonkey: siehe meine Bearbeitung in der Antwort
Enzotib
3
+1. Ich wusste nicht - Prädikat löschen. Vielleicht wird es nicht benötigt, aber ich werde hinzufügen -type f.
Michał Šrajer
@ Michał Šrajer: gute Tipps für -type f, das vergesse ich. Das -deleteist eine GNU-Erweiterung, denke ich.
Enzotib