Supponendo che tu abbia GNU find, lascia che trovi le directory e lascia che bash faccia il resto:
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
per trovare tutti gli elementi del tipofile
, nella cartella corrente e nelle sottocartellecut -d/ -f2
per ritagliare la loro cartella specificasort
per ordinare l'elenco dei nomi delle cartelleuniq -c
per restituire il numero di volte che ogni nome di cartella è stato contato
Questo stampa il conteggio dei file per directory per il livello di directory corrente:
du -a | cut -d/ -f2 | sort | uniq -c | sort -nr