it-swarm.com.de

Wie kann ich die Anzahl der Ordner in einem Laufwerk unter Linux zählen?

Ich muss eine externe Festplatte so organisieren, dass sich nicht mehr als 500 Ordner darauf befinden. Im Bereich "Eigenschaften" von Ubuntu wird nur die Anzahl der Dateien angezeigt, nicht die Anzahl der Ordner.

Gibt es eine einfache Befehlszeile, die die Anzahl der Unterverzeichnisse angibt?

Ich muss rekursiv zählen, und das Laufwerk ist eine externe Festplatte, die unter /media/MUSIC/ installiert ist. Es ist für eine Auto-Stereoanlage, deren Dokumentation besagt, dass nur die ersten 500 Ordner gelesen werden.

24
Dean Rather

Navigieren Sie zu Ihrem Laufwerk und führen Sie es einfach aus

ls -lR | grep ^d | wc -l
21
Aniket Thakur

Alle Ordner insgesamt suchen, einschließlich Unterverzeichnisse?

find /mount/point -type d | wc -l

... oder alle Ordner im Stammverzeichnis finden (ohne Unterverzeichnisse)?

find /mount/point -maxdepth 1 -type d | wc -l
35
quack quixote

Neue Zeilen sind gültige Zeichen in Verzeichnisnamen. Ich empfehle, find für jedes gefundene Verzeichnis eine leere Zeile ausgeben zu lassen und dann wc diese Zeilen zählen zu lassen.

find /mount/point -type d -printf '\n' | wc -l
4
Erik Sjölund

Versuchen Sie Folgendes [siehe unten]:

ls -1 -p | grep "/" | wc -l

Dadurch wird eine einspaltige Liste des aktuellen Verzeichnisses mit abschließenden Schrägstrichen für Elemente gedruckt, die Unterverzeichnisse sind. Anschließend werden die Zeilen mit den Schrägstrichen gezählt.

BEARBEITEN: Sie sollten wahrscheinlich mit der Antwort von quack quixote gehen, da sie etwas expliziter ist, aber ich habe meine korrigiert (nachdem ich die Vorschläge von quack berücksichtigt habe).

ls -Rp | grep "/$" | wc -l
3
stuntmouse

Ich habe du --inodes nützlich gefunden, bin mir aber nicht sicher, welche Version von du es erfordert. Unter Ubuntu 17.10 funktioniert Folgendes:

du --inodes      # all files and subdirectories
du --inodes -s   # summary
du --inodes -d 2 # depth 2 at most

Kombinieren Sie mit | sort -nr, um absteigend nach der Anzahl der enthaltenen Inodes zu sortieren.

1
krlmlr

Ich habe ffcnt geschrieben, um die rekursive Dateizählung unter bestimmten Umständen zu beschleunigen: Rotationsdisketten und Dateisysteme, die Extent-Mapping unterstützen.

Es kann eine Größenordnung schneller sein als ls oder find basierte Ansätze

1
the8472

Wenn es eine große Anzahl von Verzeichnissen gibt, kann es eine Ewigkeit dauern, bis Tools wie tree fertig sind oder sogar hängen bleiben. Daher möchten Sie möglicherweise etwas Effizienteres verwenden.

Die effizienteste Methode zum Zählen der Verzeichnisse, die ich mir vorstellen kann, ist die folgende, da find nur einen . für jeden gefundenen Ordner anstelle des vollständigen Pfads und Dateinamens ausgibt und wc nur die Anzahl der Zeichen durchlaufen muss:

find /mount/point -type d -printf '.' |wc -c

So schließen Sie /mount/point selbst von der Berechnung aus und zählen nur die Unterverzeichnisse:

find /mount/point -mindepth 1 -type d -printf '.' |wc -c
1
David

Ich verwende gerne tree, um die Anzahl der Verzeichnisse zu ermitteln

tree -d -R -fi --noreport | wc -l

Oder ich verwende find, um anzuzeigen, dass sich ein Großteil der Ordner mit befindet

find . -type d -printf "%h\n" | cut -d/ -f-2 | sort | uniq -c | sort -rn
0
Cameron L.