ディレクトリ内、またはサブディレクトリ毎のファイルの数を取得する方法

動画から画像を作成したり、水増しを行った時に各ディレクトリのファイルの数を一気に取得出来るので、特に2つ目のはめっちゃ便利。

ディレクトリ内のファイル数を取得

# 方法1
$ ls -U1 | wc -l

# 方法2(1より遅い)
$ find . -type f | wc -l

lsのオプションに-lを用いるとファイルのアクセス権限なども表示するが、
-1だとファイル名しか表示しない。
更に、-Uもつけることでソートしないようになるため、出来るだけ速度を向上させることが出来る。

ディレクトリ内のサブディレクトリ毎のファイル数を取得

$ for d in `find ./ -type d`; do echo $d,`ls "$d" | wc -l`; done
./, 4
.//R0_L1, 21453
.//R0_L0, 20450
.//R1_L0, 0
.//R1_L1, 0

見やすくすると以下のようになる。

for d in `find ./ -type d`; 
    do echo $d,`ls "$d" | wc -l`; 
done

以下、各コマンドの解説
find ./ -type d:カレントディレクトリでタイプが「ディレクトリ」のものを表示
ls "$d":カレントディレクトリにあるディレクトリの中身を表示
ls "$d" | wc -l:カレントディレクトリにあるディレクトリの中にあるファイルの数を表示
do echo $d,`ls "$d" | wc -l`:①を③の結果をカンマ区切りで表示

参考