Gibt es eine Möglichkeit, die Tiefe einer rekursiven Dateiliste unter Linux zu begrenzen?
Der Befehl, den ich gerade benutze, lautet:
ls -laR > dirlist.txt
Aber ich habe ungefähr 200 Verzeichnisse und jedes von ihnen hat 10 Verzeichnisse. Es wird also viel zu lange dauern und zu viele Systemressourcen beanspruchen.
Alles, was mich wirklich interessiert, sind die Besitz- und Berechtigungsinformationen für die Unterverzeichnisse der ersten Ebene:
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk
drwxr--r-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk/htdocs
drwxr--r-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk/cgi-bin
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk
drwxr-xrwx 14 proftp root 1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk/htdocs
drwxr-xrwx 14 proftp root 1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk/cgi-bin
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk/htdocs
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk/cgi-bin
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk/htdocs
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk/cgi-bin
BEARBEITEN:
Endgültige Befehlswahl:
find -maxdepth 2 -type d -ls >dirlist
ls -la /var/www/vhosts/*
?Antworten:
Kasse die
-maxdepth
Flagge vonfind
Hier habe ich 1 als maximale Level-Tiefe verwendet,
-type d
dh nur Verzeichnisse finden, die dann denls -ld
Inhalt von im Langformat auflisten.quelle
-d
Option hinzufügenls
.find
Teil geschrieben, um sein Hauptproblem zu lösen. Trotzdem danke, ich füge es hinzu.-print0
undxargs -0
viel. Beispiel:find . -maxdepth 1 -type d -print0 | xargs -0 ls -d
Nutzen Sie
find
die Optionen vonEs wird tatsächlich kein Exec
/bin/ls
benötigt;Suchen hat eine Option, die genau das tut:
Um nur die eine Ebene von Unterverzeichnissen anzuzeigen, an der Sie interessiert sind, fügen Sie
-mindepth
dieselbe Ebene hinzu wie-maxdepth
:Verwenden Sie die Ausgabeformatierung
Wenn die angezeigten Details unterschiedlich sein sollten,
-printf
können alle Details zu einer Datei im benutzerdefinierten Format angezeigt werden . Verwenden Sie-printf
mit%M
und%u
in der Datei, um die symbolischen Berechtigungen und den Eigentümernamen der Datei anzuzeigenformat
.Ich habe später bemerkt, dass Sie die vollständigen Eigentumsinformationen wünschen, einschließlich der Gruppe. Verwendung
%g
im Format für den symbolischen Namen oder%G
für die Gruppen-ID (wie auch%U
für die numerische Benutzer-ID)Dies sollte Ihnen genau die Details geben, die Sie benötigen, für genau die richtigen Dateien.
Ich werde ein Beispiel geben, das tatsächlich unterschiedliche Werte für Benutzer und Gruppe zeigt:
(Zur besseren Lesbarkeit bearbeitet: eingerückte, verkürzte letzte Zeile)
Hinweise zur Leistung
Obwohl die Ausführungszeit für diese Art von Befehl größtenteils irrelevant ist, ist die Leistungssteigerung hier groß genug, um darauf hinzuweisen:
Wir sparen nicht nur das Erstellen eines neuen Prozesses für jeden Namen - eine große Aufgabe - die Informationen müssen nicht einmal gelesen werden, wie es
find
bereits bekannt ist.quelle
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.
quelle
tree -L 2 xxx/
odertree -L 2 -d xxx/
reicht für einen Fall.Ich habe beim Spielen meines Fisches eine einfache Lösung gefunden, die perfekt zu Ihren Bedürfnissen passt.
oder
quelle