Za předpokladu, že máte GNU find, nechte ho najít adresáře a bash se postará o zbytek:
find . -type d -print0 | while read -d '' -r dir; do
files=("$dir"/*)
printf "%5d files in directory %s\n" "${#files[@]}" "$dir"
done
find . -type f | cut -d/ -f2 | sort | uniq -c
find . -type f
najít všechny položky typufile
, v aktuální složce a podsložkáchcut -d/ -f2
vystřihnout jejich konkrétní složkusort
seřadit seznam názvů složekuniq -c
vrátit počet, kolikrát byl každý název složky započítán
Tím se vytiskne počet souborů na adresář pro aktuální úroveň adresáře:
du -a | cut -d/ -f2 | sort | uniq -c | sort -nr