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 an /media/MUSIC/
. Es ist für eine Auto-Stereoanlage, deren Dokumentation besagt, dass nur die ersten 500 Ordner gelesen werden.
linux
command-line
Dean Rather
quelle
quelle
grep -c
gegenüber demwc -l
. Vielleicht bin es nur ich.\nd
(wobei\n
das NL-Zeichen ist).ls
Ausgabe soll nicht weitergeleitet werden . Darüber hinaus wird dies viel langsamer sein, da es den gesamten Baum ausgeben muss und dann grep durch ihn laufen mussAlle Ordner insgesamt suchen, einschließlich Unterverzeichnisse?
... oder alle Ordner im Stammverzeichnis suchen (ohne Unterverzeichnisse)?
quelle
*foo*
zur Kursivschrift: foo )find /path -not -iname '*.mp3' | wc -l
, um MP3s zu filtern, oder um sowohl MP3s als auch WAVs zu verwendenfind /path -not -iname '*.mp3' -not -iname '*.wav' | wc -l
Neue Zeilen sind gültige Zeichen in Verzeichnisnamen. Ich empfehle
find
, für jedes gefundene Verzeichnis eine leere Zeile auszudrucken und dannwc
diese Zeilen zählen zu lassen.quelle
Versuchen Sie Folgendes [siehe unten]:
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).
quelle
-1
da ls die Pipe erkennt und Spalten nicht formatiert. Sie können auch mit rekursiven Auflistungen greifen-R
, aber dann möchten Sie wahrscheinlich"/$"
nur nach abschließenden Schrägstrichen suchen (oder die Zählung wird ausgeschaltet sein). Endfassung:ls -Rp | grep "/$" | wc -l
.
(dh/mount/point
) in seiner Zählung, die ls - Version in meinem obigen Kommentar nicht. Diese Zählungen unterscheiden sich um 1, was Sie mit/mount/point/*
dem Befehl find korrigieren können (vorausgesetzt, Sie haben keine versteckten Punktverzeichnisse).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 als
ls
oderfind
basierend auf Ansätzen seinquelle
Wenn es eine große Anzahl von Verzeichnissen gibt,
tree
kann es eine Ewigkeit dauern , bis Tools fertig sind oder sogar hängen, sodass Sie möglicherweise etwas Effizienteres verwenden möchten.Die effizienteste Methode zum Zählen der Verzeichnisse, die ich mir vorstellen kann, ist die folgende, da
find
nur eines.
für jeden gefundenen Ordner anstelle des vollständigen Pfads und Dateinamens gedruckt wird undwc
nur die Anzahl der Zeichen durchlaufen werden muss:So schließen Sie
/mount/point
sich von der Berechnung aus und zählen nur die Unterverzeichnisse:quelle
Ich habe
du --inodes
nützlich gefunden , bin mir aber nicht sicher, welche Versiondu
es erfordert. Unter Ubuntu 17.10 funktioniert Folgendes:Kombiniere mit
| sort -nr
, um absteigend nach der Anzahl der enthaltenen Inodes zu sortieren.quelle
Ich verwende gerne tree, um die Anzahl der Verzeichnisse zu ermitteln
Oder ich verwende find, um anzuzeigen, dass sich ein Großteil der Ordner mit befindet
quelle
So finden Sie die Anzahl der Ordner und das Verzeichnis im aktuellen Verzeichnis
Geben Sie den folgenden Befehl in Ihr Terminal ein
quelle