Abrufen aller Dateien, die an einem bestimmten Datum geändert wurden

20

Ist es möglich, alle phpDateien in einem bestimmten Verzeichnis zu finden, die an einem bestimmten Datum geändert wurden?

Ich benutze

find /var/www/html/dir/ -mtime -28 | grep '\.php' 

Ich benötige nur Dateien, die am folgenden Datum geändert wurden: 2011-02-08

Roland
quelle

Antworten:

22

In neueren Versionen find(zB GNU 4.4.0) können Sie die -newermtOption verwenden. Zum Beispiel, um alle Dateien zu finden, die am 08.02.2011 geändert wurden

$ find /var/www/html/dir/ -type f -name "*.php" -newermt 2011-02-08 ! -newermt 2011-02-09

Beachten Sie auch, dass Sie keine Pipe in grep benötigen, um nach PHP-Dateien zu suchen, da find dies in der -nameOption für Sie tun kann .

Schauen Sie sich diese SO-Antwort an, um weitere Vorschläge zu erhalten: Wie kann man mit 'find' nach Dateien suchen, die an einem bestimmten Datum erstellt wurden?

Dogbane
quelle
4

Ärgerlicherweise gibt es keinen direkten Weg mit Standard find. Aktuelle Versionen von findGNU-Systemen (z. B. nicht eingebettetes Linux, Cygwin) und einige * BSDs verfügen über Optionen -newermtzum Vergleichen eines Dateidatums mit einem Datum mit Schreibweise .

Mit standard findkönnen Sie lediglich das Dateidatum mit dem aktuellen Datum ( -mtime) oder mit einer festen Datei vergleichen. Das aktuelle Datum ist in diesem Fall normalerweise nicht sinnvoll (es wird ab dem Zeitpunkt der findBefehlsausführung zurückgezählt, wohingegen die meisten Anwendungen ein Kalenderdatum erfordern). So haben Sie die Möglichkeit, temporäre Dateien zu erstellen, um einen Bereich zu definieren.

touch -t 201103070000 start.tmp
touch -t 201103080000 stop.tmp
find . -newer start.tmp \! -newer stop.tmp -print
rm start.tmp stop.tmp
Gilles 'SO - hör auf böse zu sein'
quelle
2

Sie haben bereits fast den richtigen Befehl, für Versionen, bei finddenen Sie keine Daten verwenden können:

find /var/www/html/dir/ -mtime 27 | grep '\.php'

Im Allgemeinen bedeutet für find- n weniger als , n bedeutet gleich , + n bedeutet "mehr als". Traditionell findgibt es einige Ausnahmen, aber GNU findund andere neuere Versionen wie BSD / Mac OS X haben diese korrigiert. (Denken Sie daran, wenn Sie jemals auf einem Solaris oder einem anderen kommerziellen Unix-System arbeiten.)

Geekosaurier
quelle
1

Mit zshdieser Funktion können Sieage nur die Namen von Dateien drucken, die an einem bestimmten Datum geändert wurden:

Autoload-Alter
print -rl - * .php (.e: Alter 2011/02/08 :)

oder, wenn Sie rekursiv suchen möchten:

Autoload-Alter
setopt extendedglob
print -rl - ** / *. php (.e: alter 2011/02/08 :)
don_crissti
quelle