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 an:
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 das geänderte Datum und die Uhrzeit ermitteln:
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?
-printf
Option wird vermieden,stat
dass jede gefundene Datei aufgerufen wird. In meinem Test liefert der Befehl eine nahezu identische Ausgabe, nur die Genauigkeit einer zusätzlichen Ziffer in Sekunden.stat
ist-f
.find /var -maxdepth 2 -type d -exec stat -f "%t%Sm %N" {} \;
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 einfach direkt ausdrucken. Hier ist ein gleichwertiger Befehl, der erheblich schneller ist:
quelle
find
von msys unter Windows, dem einstat
Befehl fehlt .%Tc
druckt "Datum und Uhrzeit des Gebietsschemas" und erlaubt die Formatzeichenfolge "% p% Tc"find /var -maxdepth 2 -type d | xargs ls -oAHd
Auf diese Weise können Sie mit Ihrem
ls
Basisbefehl den vollständigen Verzeichnispfad anzeigen. Währendls
der-R
Parameter für die rekursive Suche vorhanden ist, werden Pfade in den Ergebnissen nicht mit der Option-l
oder angezeigt-o
(zumindest in OSX), z. B. mit :ls -lR
.quelle
find /var -maxdepth 2 -type d -ls
ist einfach einfacher.Neuere GNU-Versionen von enthalten
find
auch eine-printf
Option, die Datumsfelder enthält. Wenn Sie den Dateinamen und die Änderungszeit im Standardformat "C" drucken müssen, können Sie verwenden-printf "%c %p\n"
.Wenn Sie das Datum in einem bestimmten Format haben möchten, können Sie das
%C
gefolgt von einem Feldzeichen verwenden. Zum Beispiel, 4-stellige Jahr wäre%CY
, mitY
wobei das Zeichen für 4-stellige Jahr.Beachten Sie, dass Sie mehrere Felder angeben müssen, wenn Sie mehrere Felder benötigen
%C
. Das Format JJJJ-MM-TT würde beispielsweise so aussehen%CY-%Cm-%Cd
.Weitere Informationen finden Sie in den Manpages oder in der Online-Dokumentation .
Hier ist ein Arbeitsbeispiel:
quelle
Eine andere, mit der ich am letzten Tag geänderte Dateien gedruckt habe. ls -ltr gibt mir detailliertere Informationen wie Änderungszeit, Benutzer usw.
quelle
-name '*.ext'
Spezifikation. Sortiertls -lt
nach der Änderungszeit.)-print0
anstelle von-print
und dannxargs -0
anstelle von zu verwendenxargs
.Versuchen Sie diese Zeile:
hier habe ich es ausgeführt, es gibt aus:
quelle