GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann die Tiefe für die rekursive Dateiliste begrenzt werden?

Schauen Sie sich den -maxdepth an Flag von find

find . -maxdepth 1 -type d -exec ls -ld "{}" \;

Hier habe ich 1 als maximale Leveltiefe verwendet, -type d bedeutet nur Verzeichnisse finden, die dann ls -ld listet den Inhalt von im Langformat auf.


Verwenden Sie find 's Optionen

Es gibt tatsächlich keine Ausführung von /bin/ls benötigt;

Find hat eine Option, die genau das tut:

find . -maxdepth 2 -type d -ls

Um nur die eine Ebene von Unterverzeichnissen zu sehen, an der Sie interessiert sind, fügen Sie -mindepth hinzu auf die gleiche Ebene wie -maxdepth :

find . -mindepth 2 -maxdepth 2 -type d -ls

Ausgabeformatierung verwenden

Wenn die angezeigten Details anders sein sollten, -printf kann jedes Detail über eine Datei in benutzerdefiniertem Format anzeigen;um die symbolischen Berechtigungen und den Eigentümernamen der Datei anzuzeigen, verwenden Sie -printf mit %M und %u im format .

Mir ist später aufgefallen, dass Sie die vollständigen Eigentumsinformationen wünschen, einschließlich der Gruppe. Verwenden Sie %g im Format für den symbolischen Namen oder %G für die Gruppen-ID (wie auch %U für numerische Benutzer-ID)

find . -mindepth 2 -maxdepth 2 -type d -printf '%M %u %g %p\n'

Dies sollte Ihnen genau die Details geben, die Sie für genau die richtigen Dateien benötigen.

Ich werde ein Beispiel geben, das tatsächlich unterschiedliche Werte für Benutzer und Gruppe zeigt:

$ sudo find /tmp -mindepth 2 -maxdepth 2 -type d -printf '%M %u %g %p\n'
drwx------ www-data  www-data /tmp/user/33
drwx------ octopussy root     /tmp/user/126
drwx------ root      root     /tmp/user/0
drwx------ siegel    root     /tmp/user/1000
drwxrwxrwt root      root     /tmp/systemd-[...].service-HRUQmm/tmp

(Aus Gründen der Lesbarkeit bearbeitet:eingerückt, letzte Zeile gekürzt)


Hinweise zur Leistung

Obwohl die Ausführungszeit für diese Art von Befehlen meist irrelevant ist, ist die Leistungssteigerung hier groß genug, um darauf hinzuweisen:

Wir ersparen uns nicht nur die Erstellung eines neuen Prozesses für jeden Namen - ein Riesen Aufgabe - die Informationen müssen nicht einmal gelesen werden, da find weiß es schon.


tree -L 2 -u -g -p -d

Druckt den Verzeichnisbaum in einem hübschen Format bis zur Tiefe 2 (-L 2). Benutzer (-u) und Gruppe (-g) und Berechtigungen (-p) drucken. Nur Verzeichnisse drucken (-d). Baum hat viele andere nützliche Optionen.


Linux
  1. Wie listet man rekursive Dateigrößen von Dateien und Verzeichnissen in einem Verzeichnis auf?

  2. Wie beschränke ich die Dateigröße beim Commit?

  3. Wie listet man Ordner mit Bash-Befehlen auf?

  4. Wie liste ich Dateien mit vollständigen Pfaden in Linux auf?

  5. Wie erstellen Sie eine Liste/Datei, aus der Pacman installiert werden kann?

Linux-Berechtigungen – So finden Sie Berechtigungen einer Datei

So begrenzen Sie die Tiefe der rekursiven Dateiauflistung in Linux

So ändern Sie das Limit für offene Dateien in Linux

So finden Sie Dateien basierend auf dem Zeitstempel in Linux

So begrenzen Sie die Tiefe des „Baums“ für die rekursive Dateiauflistung

So finden Sie die längste(n) Zeile(n) in einer Datei in Linux