Ich habe eine Windows 7-Box mit installiertem Cygwin. Ich habe mehrere Ordner mit Dateien in einem einzigen Stammordner. Ich möchte die Liste der Dateien finden, die einen Zeitstempel innerhalb eines bestimmten Datums-/Zeitbereichs haben.
Antwort1
find
Sie können den Befehl mit der Option verwenden -newerXY
.
Ausman find
:
-neuerXYReferenz
Vergleicht den Zeitstempel der aktuellen Datei mitReferenz. DerReferenzDas Argument ist normalerweise der Name einer Datei (und einer ihrer Zeitstempel wird für den Vergleich verwendet), es kann aber auch eine Zeichenfolge sein, die eine absolute Zeit beschreibt.XUndYsind Platzhalter für andere Buchstaben, und diese Buchstaben wählen aus, welche Zeit zu welcher gehörtReferenzwird für den Vergleich herangezogen.
Die möglichen Werte fürXUndYsind wie folgt:
- a - Zeitpunkt des letzten Zugriffs auf die aktuelle Datei oderReferenz
- B - Geburtszeit der aktuellen Datei oderReferenz
- c - Zeitpunkt der letzten Inode-Statusänderung der aktuellen Datei oderReferenz
- m - letzte Änderungszeit der aktuellen Datei oderReferenz
- T -Referenzist eine Zeichenfolge, die einen Zeitstempel darstellt (nicht gültig fürX)
Xbezieht sich auf die aktuelle Datei undYzumReferenz, daher sollten Sie „m“ für den ersten Buchstaben (Änderungsdatum der aktuellen Datei) und „t“ für den zweiten (Zeitstempel als Zeichenfolge) verwenden. Beispielskript:
find . -type f -newermt "2012-05-01" ! -newermt "2012-05-15"
Es werden alle Dateien gefunden, die zwischen dem 1. und 15. Mai 2012 geändert wurden. Der !
(logische NOT
) Operator kehrt die Bedeutung des nachfolgenden Arguments um – if -newerXY
bedeutet „X ist neuer als Y“, then ! -newerXY
bedeutet „X ist älter als Y“.
Eine alternative Möglichkeit, da Sie unter Windows arbeiten, ist die Verwendung von Powershell.Get-ChildItem
Das Cmdlet gibt alle Dateien in einem bestimmten Ordner zurück (rekursiv, falls gewünscht) und dasWhere-Object
Mit dem Cmdlet können Sie die Ausgabe anderer Befehle filtern. Beispielskript (vorausgesetzt, das zu durchsuchende Verzeichnis ist das aktuelle Verzeichnis):
Get-ChildItem -Recurse | Where-Object { $_.LastWriteTime -ge "2012-05-01" -and $_.LastWriteTime -le "2012-05-15" -and !$_.PSIsContainer }
Dies gibt alle Dateien zurück, die zwischen dem 1. und 15. Mai 2012 geändert wurden. Sie können CreationTime
anstelle von verwenden LastWriteTime
, um stattdessen nach dem Erstellungszeitpunkt der Datei zu suchen. Der !$_.PSIsContainer
Filter gibt nur Dateien zurück ( PSIsContainer
gilt für Ordner und das Ausrufezeichen ist wieder der logische NOT
Operator).
Antwort2
Sie könnenFar-Manager, Find File
mit Filter:
Klicken Sie auf die Filterschaltfläche und drücken Sie , Insert
um einen neuen Filter einzufügen:
Geben Sie dem Filter einen beliebigen Namen, geben Sie die Dateimaske ein, aktivieren Sie Date/Time
, wählen Sie einen Wert aus change
, deaktivieren Sie , Relative
und geben Sie die Datums-/Zeitbereiche ein:
Filters menu
Klicken Sie auf „OK“ und space
wählen Sie mit den den Filter aus ( +
sollte neben dem Filter erscheinen):
Drücken Sie die Eingabetaste und geben Sie Folgendes ein Find
:
Suchergebnisse (in diesem Beispiel Fotos – Maske IMG_*.jpg
– Datumsbereich für Juni 2022):
Antwort3
Es ist auch möglich, diese Dateien mit dem GUI-Datei-Explorer zu finden. Einige Beispiele:
datemodified:2015-02-18 08:00..2015-02-18 13:00
datemodified:>2015-02-18 08:00
datemodified:<2015-02-18 08:00
Und etwas weiterführende Literatur: Erweiterte Tipps zur Suche in Windows, Erweiterte Abfragesyntax programmgesteuert verwenden