it-swarm.com.de

Wie kann ich die geänderte Uhrzeit mit dem Befehl 'find' anzeigen?

Mit einem find Befehl kann ich Verzeichnisnamen mit mehreren Ebenen anzeigen. Der folgende Befehl zeigt alle Verzeichnisse unter /var Pfad mit einer Tiefe von 2:

find /var -maxdepth 2 -type d;

Das Ergebnis zeigt:

/var
/var/log
/var/log/sssd
/var/log/samba
/var/log/audit
/var/log/ConsoleKit
/var/log/gdm
/var/log/sa

Mit einem stat Befehl kann ich die geänderte Datumszeit finden:

stat /var/log/samba | grep 'Modify:'

Das Ergebnis ist:

Modify: 2014-01-02 11:21:27.762346214 -0800 

Gibt es eine Möglichkeit, die beiden Befehle so zu kombinieren, dass Verzeichnisse mit geänderter Datums- und Uhrzeitangabe aufgelistet werden?

64
Purres

Sie könnten das -exec wechsle zu find und definiere das Ausgabeformat von stat mit dem -c wie folgt wechseln:

find /var -maxdepth 2 -type d -exec stat -c "%n %y" {} \;

Dies sollte den Dateinamen gefolgt von der Änderungszeit in derselben Zeile der Ausgabe anzeigen.

53
rc0r

Die akzeptierte Antwort funktioniert, ist aber langsam. Es ist nicht erforderlich, stat für jedes Verzeichnis auszuführen, find gibt das Änderungsdatum an und Sie können es direkt ausdrucken. Hier ist ein gleichwertiger Befehl, der erheblich schneller ist:

 find /var -maxdepth 2 -type d -printf "%p %TY-%Tm-%Td %TH:%TM:%TS %Tz\n"
103
kzar

find /var -maxdepth 2 -type d | xargs ls -oAHd

Dies ist eine Möglichkeit, Ihren grundlegenden Befehl ls zum Anzeigen des vollständigen Verzeichnispfads abzurufen. Während ls über den Parameter -R Für die rekursive Suche verfügt, werden Pfade in den Ergebnissen nicht mit der Option -l Oder -o Angezeigt (in OSX unter dest), zum Beispiel mit: ls -lR.

13
Mark

Eine andere, mit der ich am letzten Tag geänderte Dateien drucke. ls -ltr gibt mir detailliertere Informationen wie Änderungszeit, Benutzer usw

find <my_dir> -mtime -1 -type f -print | xargs ls -ltr 
5
user666

Aktuelle GNU Versionen von find enthalten auch eine -printf - Option, die Datumsfelder enthält. Wenn Sie den Dateinamen und die Änderungszeit im Standard "C" drucken müssen msgstr "können Sie -printf "%c %p\n" verwenden.

Wenn Sie das Datum in einem bestimmten Format haben möchten, können Sie %C Gefolgt von einem Feldzeichen verwenden. Eine vierstellige Jahreszahl wäre beispielsweise %CY, Wobei Y das Zeichen für eine vierstellige Jahreszahl ist.
Beachten Sie, dass Sie %C Mehrfach angeben müssen, wenn Sie mehrere Felder benötigen. Das Format JJJJ-MM-TT sieht beispielsweise wie folgt aus: %CY-%Cm-%Cd.

Weitere Informationen finden Sie in den Manpages oder in Online-Dokumentation .

Hier ist ein funktionierendes Beispiel:

find . -name favicon.ico -printf "%c %p\n"
4
Mr. Llama

versuchen Sie diese Zeile:

find /var -maxdepth 2 -type d|xargs stat|grep -E 'File|Modi'

hier habe ich es laufen lassen, es gibt aus:

....
  File: ‘/var/cache/cups’
Modify: 2013-12-24 00:42:59.808906421 +0100
  File: ‘/var/log’
Modify: 2014-01-01 12:41:50.622172106 +0100
  File: ‘/var/log/old’
Modify: 2013-05-31 20:40:23.000000000 +0200
  File: ‘/var/log/journal’
Modify: 2013-12-15 18:56:58.319351603 +0100
  File: ‘/var/log/speech-dispatcher’
Modify: 2013-10-27 01:00:08.000000000 +0200
  File: ‘/var/log/cups’
Modify: 2013-12-22 00:49:52.888346088 +0100
  File: ‘/var/opt’
Modify: 2013-05-31 20:40:23.000000000 +0200
....
1
Kent