Mögliches Duplikat:
Wie kann ich die Anzahl der Ordner in einem Laufwerk unter Linux zählen?
Ich habe einen wirklich tiefen Verzeichnisbaum auf meiner Linux-Box. Ich möchte alle Dateien in diesem Pfad zählen, einschließlich aller Unterverzeichnisse.
Beispiel für diesen Verzeichnisbaum:
/home/blue
/home/red
/home/dir/green
/home/dir/yellow
/home/otherDir/
Wenn ich weitergebe /home
, möchte ich, dass es vier Dateien zurückgibt. Oder Bonuspunkte, wenn vier Dateien und zwei Verzeichnisse zurückgegeben werden. Grundsätzlich möchte ich, dass Sie mit der rechten Maustaste auf einen Ordner unter Windows klicken, Eigenschaften auswählen und sehen, wie viele Dateien / Ordner sich in diesem Ordner befinden.
Wie kann ich das am einfachsten machen? Ich habe eine Lösung für ein Python-Skript, das ich geschrieben habe, aber warum ist das nicht so einfach wie das Ausführen ls | wc
oder ähnliches?
quelle
locate
Datenbank auf dem neuesten Stand ist:locate /some/path | wc -l
(oder auf meinem Mac:)locate -c /some/path
. Aber: Dies zählt auch die Dateien/this/other/path/with/some/path
und die Ordner selbst.Antworten:
find . -type f | wc -l
Erklärung:
find . -type f
Findet alle Dateien ( -type f ) in diesem ( . ) Verzeichnis und in allen Unterverzeichnissen werden die Dateinamen gedruckt, um eine pro Zeile auszugeben.Dies wird dann verrohrt | into
wc
(word count) Die-l
Option weist wc an, nur die Zeilen seiner Eingabe zu zählen.Zusammen zählen sie alle Ihre Dateien.
quelle
find
Ausgabe verursacht wurde1
Die obigen Antworten beantworten bereits die Frage, aber ich werde hinzufügen, dass, wenn Sie find ohne Argumente verwenden (mit Ausnahme des Ordners, in dem die Suche stattfinden soll), wie in:
Die Suche geht viel schneller, fast augenblicklich, oder zumindest für mich. Dies liegt daran, dass die type-Klausel einen stat () -Systemaufruf für jeden Namen ausführen muss, um dessen Typ zu überprüfen. Wenn Sie dies nicht tun, wird dies vermieden.
Dies hat den Unterschied, dass die Anzahl der Dateien plus Ordner anstatt nur der Dateien zurückgegeben wird, aber zumindest für mich ist dies ausreichend, da ich diese meistens verwende, um herauszufinden, in welchen Ordnern sich große Mengen an Dateien befinden, deren Kopieren und Komprimieren ewig dauert. Wenn ich Ordner zähle, kann ich immer noch die Ordner mit den meisten Dateien finden. Ich benötige mehr Geschwindigkeit als Präzision.
quelle
1
Für Dateien:
Für Verzeichnisse:
Beide arbeiten im aktuellen Arbeitsverzeichnis.
quelle
1
Mit Bash 4+
Sie müssen find nicht zweimal aufrufen, wenn Sie nach Dateien und Verzeichnissen suchen möchten
quelle
Leichte Aktualisierung auf akzeptierte Antwort, wenn Sie die Anzahl der Verzeichnisse und dergleichen möchten
quelle
find $DIR -exec stat -f '%HT' {} \; | sort | uniq -c | sort -rn
(Hier%T
ist die Eingabe für eine reguläre Datei leer, ein Stern für eine ausführbare Datei oder ein Schrägstrich für einen Ordner; daher%HT
wird ein zusätzlicher Text benötigt, um zu verhindern, dass der Speicherplatz nicht gezählt wird, wie z> %T
. )