Frage Anzahl der Dateien in Ordner und Unterordner finden?


Ich möchte die Gesamtzahl der Anzahl der Dateien in einem Ordner und allen Unterordnern ermitteln.


112
2018-04-08 11:55


Ursprung




Antworten:


Kann etwas wie sein

find . -type f | wc -l

würde den Trick machen. Versuchen Sie den Befehl aus dem übergeordneten Ordner.


179
2018-04-08 12:06



Die Lösung schlägt bei Dateien fehl, deren Namen einen Zeilenumbruch enthalten. - user unknown
@Benutzer unbekannt: find . -type f -ls | wc -l - arrange
noch schneller: find . -type f -print0 | tr -d -c '\0' | wc -c - arrange
@arrange: noch schneller: find . -type f -printf . | wc -c - Ich nehme den Ausdruck für meine Lösung statt meines -exec-Echos. - user unknown
Beachten Sie, dass dies auch versteckte Dateien zählt, die mit einem Punkt beginnen. Ich betrachte dies eher als einen Fehler, aber es ist gut zu wissen. - cgogolin


Benutze die tree Befehl. Möglicherweise müssen Sie das installieren tree Paket.

Es listet alle Dateien und Ordner unter dem angegebenen Ordner auf und listet am Ende eine Zusammenfassung auf.


22
2018-04-08 12:09





Um Dateien (auch Dateien ohne Erweiterung) im Stammverzeichnis des aktuellen Verzeichnisses zu zählen, verwenden Sie:

ls -l | grep ^- | wc -l

Dateien zählen (auch Dateien ohne Erweiterung) rekursiv Verwenden Sie im Stammverzeichnis des aktuellen Verzeichnisses Folgendes:

ls -lR | grep ^- | wc -l

10
2017-11-12 20:39





Der schnellste und einfachste Weg ist es zu verwenden tree. Seine Geschwindigkeit wird durch Ihr Ausgangs-Terminal begrenzt, wenn Sie also das Ergebnis an die Pipeline schicken tail -1Sie erhalten sofort ein Ergebnis. Sie können auch steuern, auf welcher Verzeichnisebene die Ergebnisse angezeigt werden sollen -L Möglichkeit. Für kolorierte Ausgabe verwenden Sie -C. Beispielsweise:

$ tree share/some/directory/ | tail -1
558 directories, 853 files

$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files

Wenn es nicht schon da ist, kannst du es bekommen Hier.


9
2018-01-15 13:20





find -type f -printf . | wc -c

Zählen Sie nicht die Ausgabezeilen von find, da Dateinamen mit 99 Zeilenumbrüchen als 100 Dateien gezählt werden.


4
2018-04-08 14:21



Dateinamen mit neuen Zeilen sind ein unglaublich seltener Randfall. - DisgruntledGoat
@DisgruntledGoat: Ein Fehler wird also extrem schwer zu finden sein. - user unknown


Verwenden Sie diesen Befehl für jeden Ordner im Pfad

for D in *; do echo $D; find $D -type f| wc -l; done

2
2018-03-20 18:02





Find scheint schneller zu sein als Baum, daher habe ich unten die Dateien in jedem Verzeichnis des aktuellen Arbeitsverzeichnisses gezählt (Dateien in CWD ignoriert), wobei die Verzeichnisse Leerzeichen enthalten dürfen:

ls -d */ | while read dir_line do echo -n "$dir_line :" find "$dir_line" -type f | wc -l done


1
2017-07-21 09:47



Parsing Ausgabe von ls ist sehr schlechte Idee. - souravc
Großartiger Code, wie kann ich die Ausgabezeilen in einer steigenden oder fallenden Anzahl von Dateien anordnen - nightcrawler


Sie können verwenden find . | wc -l

find . listet alle Dateien und Ordner und deren Inhalte beginnend in Ihrem aktuellen Ordner auf.
wc -l zählt die Ergebnisse von find


0
2018-04-08 12:06



Diese Lösung zählt auch die Ordner, ich gab das Zeichen, weil es meinem Anlass entsprach, dass ich sie nicht zählen wollte :) - topless
Die Lösung schlägt bei Dateien fehl, deren Namen einen Zeilenumbruch enthalten. - user unknown