Angenommen, Sie möchten nur eine rekursive Zählung von Dateien, nicht von Verzeichnissen und anderen Typen, sollte so etwas funktionieren:
find . -maxdepth 1 -mindepth 1 -type d | while read dir; do
printf "%-25.25s : " "$dir"
find "$dir" -type f | wc -l
done
Diese Aufgabe hat mich so fasziniert, dass ich selbst eine Lösung finden wollte. Es dauert nicht einmal eine While-Schleife und DARF schneller in der Ausführungsgeschwindigkeit sein. Unnötig zu erwähnen, dass Thors Bemühungen mir sehr dabei geholfen haben, die Dinge im Detail zu verstehen.
Also hier ist meins:
find . -maxdepth 1 -mindepth 1 -type d -exec sh -c 'echo "{} : $(find "{}" -type f | wc -l)" file\(s\)' \;
Es sieht aus einem bestimmten Grund bescheiden aus, denn es ist viel mächtiger als es aussieht. :-)
Sollten Sie jedoch beabsichtigen, dies in Ihren .bash_aliases
aufzunehmen Datei muss es so aussehen:
alias somealias='find . -maxdepth 1 -mindepth 1 -type d -exec sh -c '\''echo "{} : $(find "{}" -type f | wc -l)" file\(s\)'\'' \;'
Beachten Sie die sehr knifflige Handhabung von verschachtelten single Zitate. Und nein, das ist es nicht möglich, doppelte Anführungszeichen für sh -c
zu verwenden Argument.
find . -type f | cut -d"/" -f2 | uniq -c
Listet Ordner und Dateien im aktuellen Ordner mit der Anzahl der darunter gefundenen Dateien auf. Schnell und nützlich IMO. (Dateien werden mit Zählung 1 angezeigt).