ディレクトリ内のすべてのファイルを再帰的にカウントする[複製]


198

重複の可能性:
Linuxを使用してドライブ内のフォルダーの数をカウントするにはどうすればよいですか?

Linuxボックスに非常に深いディレクトリツリーがあります。すべてのサブディレクトリを含む、そのパス内のすべてのファイルをカウントしたいと思います。

たとえば、次のディレクトリツリーを考えます。

/home/blue
/home/red
/home/dir/green
/home/dir/yellow
/home/otherDir/

を渡すと/home、4つのファイルが返されます。または、4つのファイルと2つのディレクトリを返す場合のボーナスポイント。基本的に、Windowsでフォルダーを右クリックしてプロパティを選択し、そのフォルダーに含まれるファイル/フォルダーの数を確認するのと同等の機能が必要です。

これを最も簡単に行うにはどうすればよいですか?私が書いたPythonスクリプトを使用したソリューションがありますが、なぜこれが実行ほど簡単ではないのls | wcですか?


探しているものではありませんが、データベースが最新の場合(または私のMacの場合:)、非常に迅速に総計を取得します。ただし、これはのファイルもカウントし、フォルダー自体もカウントします。locatelocate /some/path | wc -llocate -c /some/path/this/other/path/with/some/path
アルジャン

ちなみに、これは異なるが、密接に関連する問題(ドライブ上のすべてのディレクトリを数える)と、ソリューションです:superuser.com/questions/129088/...
アマンダ

回答:


340

find . -type f | wc -l

説明:この()ディレクトリーおよびすべてのサブディレクトリーで
find . -type fすべてのファイル(-type f)を検出すると、ファイル名は1行に1つずつ標準出力に出力されます。

次に、これはパイプされます| into wc(word count)-lオプションは、入力の行のみをカウントするようにwcに指示します。

一緒にすべてのファイルをカウントします。


1
これは、からの最後の改行のoff-by-oneエラーに対処しないfind出力
RobertDeRose

ディレクトリのみをカウントするには、「
type

1
ファイルが見つからない場合、結果は1
Dylanthepiguy

47

上記の答えはすでに質問に答えていますが、次のように引数なしで検索を使用する場合(検索を実行するフォルダを除く)に追加します:

find . | wc -l

検索ははるかに速く、ほとんど瞬時に行われます。少なくとも私にとってはそうです。これは、type句が各名前に対してstat()システムコールを実行してそのタイプをチェックする必要があるためです-省略すると、そのようになりません。

これには、ファイルだけでなくファイルとフォルダーの数を返すという違いがありますが、少なくとも私にとっては、コピーして圧縮するのに永遠にかかる膨大な量のファイルがあるフォルダーを見つけるためにこれを使用するので十分です。フォルダーをカウントしても、ほとんどのファイルが含まれるフォルダーを見つけることができます。精度よりも速度が必要です。


1
ファイルが見つからない場合、結果は1
Dylanthepiguy

25

ファイルの場合:

find -type f | wc -l

ディレクトリの場合:

find -mindepth 1 -type d | wc -l

どちらも現在の作業ディレクトリで機能します。


1
ファイルが見つからない場合、結果は1
Dylanthepiguy

8

bash 4+を使用

shopt -s globstar
for file in **/*
do
  if [ -d "$file" ];then
    ((d++))
  elif [ -f "$file" ];then
     ((f++))
  fi
done
echo "number of files: $f"
echo "number of dirs: $d"

ファイルとディレクトリを検索する場合、findを2回呼び出す必要はありません。


8

dirsなどのカウントが必要な場合は、受け入れられた回答へのわずかな更新

find $DIR -exec stat -c '%F' {} \; | sort | uniq -c | sort -rn

1
上のMAC / BSDfind $DIR -exec stat -f '%HT' {} \; | sort | uniq -c | sort -rn(ここでは、タイプは%T、通常のファイルのための実行可能ファイルのアスタリスク、またはフォルダのスラッシュは空であり、したがって%HT必要とされている、またはいくつかの余分なテキストは次のように、カウントされないからスペースを避けるために> %T。 )
アルジャン

私10.13.6 Macで- :「E不正なオプションを見つける」私に与えます
K. -マイケル・アイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.