UNIX / BASH: Auflistung der geänderten Dateien in einen bestimmten Monat
Ich bin kämpfen, bei der Auflistung von Dateien in einen bestimmten Monat (Z. B. Februar).
Hier sind mehrere erfolglose versuche:
1) ich habe versucht, temporäre Dateien anlegen und einstellen, dass die Zeitmarke für die erste Zeit in den nächsten Monat und das erste mal in der Ziel-Monat-neuere finden, wie diese:
find -newer "$from" ! -newer "$to"
Dieser listet die Dateien im Zeitintervall ($von, $bis], aber ich würde gerne in der Zeit im Intervall [$von, $zu) (andernfalls, würde es Fehlalarme auf Dateien, erstellt von der ersten Sekunde an in den nächsten Monat). Auflistung aller Dateien geändert im Februar ist das zusätzliche problem, da dies erfordern würde, einen zu setzen der Zeitstempel um die größte noch im Februar, aber die Anzahl der Tage im Februar variiert, je nachdem, ob es sich um ein Schaltjahr handelt oder nicht, das erfordert eine zusätzliche Prüfung.
2), Wenn ich ls
ich sehe eine Menge von Komplikationen bei der Analyse, da die Möglichkeit besteht, dass Benutzername oder Gruppe enthalten Leerzeichen.
Gibt es eine einfache Art und Weise und relativ portablen Weg, dies zu tun (so funktioniert es für jeden Monat, unabhängig von Dateinamen, etc.)?
ls
wie hast du Sie entdeckt.InformationsquelleAutor eold | 2011-03-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
date
erlaubt Sie einfach generieren Zeitstempel für Zwecke wie:Glücklicherweise die gleiche syntax ist möglich in
find
:finden alle Dateien, die im März 2010
InformationsquelleAutor user123444555621
Gut, ich kann Dateien erstellen, die die minimale Zeitstempel und die maximale Zeitstempel im Februar und Dateien, die sind nur über. Februar in jeder Richtung.
Dann mit GNU 'finden', wie dies scheint zu zeigen, nur die Dateien, deren Zeitstempel im Februar.
Ich weiß nicht, wie tragbar diese Argumente sind andere Versionen von 'find'.
InformationsquelleAutor Mike Sherrill 'Cat Recall'
Hinzufügen Pumbaa80 Antwort:
In meinem pre-production-Umgebung, finden keine Unterstützung -newermt.
Was ich Tat, war vielmehr:
find
,ls
etc.)Generieren der Zeitstempel der letzten Sekunde des letzten Monat und diesen Monat
Iteration über die Liste aus Punkt 1 und vergleichen Sie den Zeitstempel jeder Datei mit dem Zeitstempel von Punkt 2
InformationsquelleAutor Jonathan Müller
Ein workaround könnte sein, die
-printf
optionfind
:Ich glaube nicht, dass
find
können filter der-printf
Ergebnis selbst, noch können Sie filter auf Datum-Elemente.Bearbeiten oder wenn Sie wirklich wollen, die
ls
-wie output:-printf
ist. Solaris scheint nicht, es zu haben.InformationsquelleAutor mvds