俺は世界を愛してる!

日記、食べたもの、飲んだもの、備忘録、思ったこと、などなど

ディレクトリ内のファイル数を数える

唐突な技術話。という名の備忘録。

みんな大好きlsコマンド。
あれが無いとめちゃ困りますよね。

そんなlsコマンドを使って、ディレクトリ内のファイル数を調べるにはどうしたら良いか、って内容です。

ファイル数を調べたいこと、あるよね?あるよね?


結論から書くと

ls -F | grep -v / | wc -l

私はこんな感じでやってます。

  • -Fを付けることでディレクトリに/を付け、それをgrepで弾いて表示する、って事ですね。

これが基本で、ここからバリエーション付けていく感じ。


例えば、ファイル数が数十万とかえらい数の場合は上記のやり方だと時間が掛かります。

なぜかって、lsは必ずソートを行って表示するからなんです。

故に、多量のファイルを引っ張ってくる時には素直にfindコマンドを使うか、こう書きます。

ls -UF | grep -v / | wc -l

  • -Uオプションを使うとソートが行われなくなるので、早くなります。


更に、サブディレクトリの中のファイルも一緒に調べたい!ってことがあります。
私はたまにあります。
ないですか?
だとしてもあったとしましょう。

その時は、こんな感じ

ls -URF | grep -v / | grep -v : | egrep -v '^$' | wc -l

ちょい長くなってしまいました。

解説すると、

  • lsコマンドの-Rオプションを指定することでサブディレクトリの内容も表示。
  • grepでファイル以外を弾く。
  • egrepの正規表現を使い、空行を削除。(これは単なるgrepでも出来るかも?)
  • それから行数を表示、って流れです。

まぁ、サブディレクトリまでやりたいときはfindで良いような気もしますが、lsこだわるロマンの様なものを感じてくだされば幸いです。

実用性はもちろん大事ですが、たまにはこういうのも考えると楽しいですよ。


以上です。