Supondo que você não tenha espaços em seus nomes de diretório:
for dir in $(find . -type d); do
echo "${dir}: $(find ${dir} -maxdepth 1 -type f | wc -l)"
done
Eu tenho um diretório com um número muito grande de subdiretórios (~ 800) que foram gerados programaticamente. Eu quero obter uma contagem do número de arquivos em cada um desses subdiretórios para verificar anomalias (se o código quebrou em uma corrida, em seguida, alguns dos arquivos serão perdidos). O que é uma maneira rápida de fazer isso? O tipo de saída que estou procurando é:
Name_of_Folder_1 [# of files in Folder 1]
Name_of_Folder_2 [# of files in Folder 2]
...
Isto fará com que você conte os arquivos em cada subdiretório do diretório atual, lidando com nomes de arquivos estranhos (com o gnu find).
find . -maxdepth 2 -mindepth 2 -type f -printf "%hfind . -maxdepth 2 -mindepth 2 -type f -printf "%h%pre%" | uniq -zc | tr '%pre%' '\n'
" | uniq -zc | tr '%pre%' '\n'
Tags ls shell-script