Der einfachste Weg scheint zu sein find /path/to/search -ls | wc -l
Suchen wird verwendet, um alle Dateien und Ordner zu durchsuchen.
-ls
alle Namen auflisten (drucken). Dies ist eine Standardeinstellung, und wenn Sie sie weglassen, funktioniert sie fast auf allen Systemen gleich. (Fast, da einige unterschiedliche Standardeinstellungen haben könnten). Es ist jedoch eine gute Angewohnheit, dies explizit zu verwenden.
Wenn Sie nur das find /path/to/search -ls
Teil verwenden, werden alle Dateien und Verzeichnisse auf Ihrem Bildschirm gedruckt.
wc
ist die Wortzahl. Die -l
Option weist es an, die Anzahl der Zeilen zu zählen.
Sie können es auf verschiedene Arten verwenden, z
- wc Testdatei
- Katzentestdatei | Toilette
Mit der ersten Option können wir eine Datei öffnen und die Anzahl der Zeilen, Wörter und Zeichen in dieser Datei zählen. Die zweite Option macht dasselbe, liest aber ohne Dateinamen von stdin.
Sie können Befehle mit einer Pipe kombinieren |
. Die Ausgabe des ersten Befehls wird an die Eingabe des zweiten Befehls weitergeleitet. So find /path/to/search -ls | wc -l
finden Anwendungen alle Dateien und Verzeichnisse aufzulisten und speist die Ausgabe WC. Wc zählt dann die Anzahl der Zeilen.
(Eine andere Alternative wäre "ls | wc" gewesen, aber find ist viel flexibler und ein gutes Werkzeug zum Lernen.)
[Nach Kommentar bearbeiten]
Es kann nützlich sein, find und exec zu kombinieren.
ZB find / -type d ! \( -path proc -o -path dev -o -path .snap \) -maxdepth 1 -exec echo starting a find to count to files in in {} \;
werden alle Verzeichnisse in / aufgelistet, einige, die Sie nicht durchsuchen möchten. Wir können den vorherigen Befehl für jeden von ihnen auslösen und eine Summe von Dateien pro Ordner in / ergeben.
Jedoch:
- Dies verwendet die GNU-spezifische Erweiterung -maxdepth.
Es funktioniert unter Linux, aber nicht unter Unix-a-Alike.
- Ich vermute, Sie möchten tatsächlich eine Anzahl von Dateien für jedes Unterverzeichnis.