2010-10-12 21:41:12 +0000 2010-10-12 21:41:12 +0000
217
217

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

Possible Duplicate: [ Linux を使用してドライブ内のフォルダの数をカウントするには?

例えば、このディレクトリツリーを指定すると:

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

もし私が/homeを渡すと、4つのファイルを返すようにしたいと思います。または、それが4つのファイルと2つのディレクトリを返したらボーナスポイント。基本的に、私はWindows上でフォルダを右クリックしてプロパティを選択し、そのフォルダに含まれているファイル/フォルダの数を見るのと同等のものが欲しいです。私は私が書いたPythonスクリプトを含む解決策を持っていますが、なぜこれはls | wcまたは類似の実行ほど簡単ではないのですか?

回答 (5)

364
364
364
2010-10-12 21:44:53 +0000

find . -type f | wc -l

説明: find . -type f は、この( . )ディレクトリ内のすべてのファイル(-type f )と、すべてのサブディレクトリ内のすべてのファイルを検出し、そのファイル名を一行ごとに標準出力します。

49
49
49
2011-03-28 22:00:38 +0000

上記の答えはすでに質問に答えていますが、次のように引数なしで find を使用すると (検索したいフォルダを除いて)、検索がより速く、ほぼ瞬時に行われることを付け加えておきます。これは、type句がそのタイプをチェックするために各名前に対してstat()システムコールを実行しなければならないためです - 省略することでそれを避けることができます。フォルダをカウントすることはまだ私がほとんどのファイルを持つフォルダを見つけることができますが、私は精度よりも速度が必要です。

26
26
26
2010-10-12 21:56:03 +0000

ファイル:

find -type f | wc -l

ディレクトリ:

find -mindepth 1 -type d | wc -l

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

8
8
8
2010-10-13 01:58:12 +0000

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"

ファイルやディレクトリを検索したい場合は、検索を二度呼び出す必要はありません。

8
8
8
2010-10-13 14:26:17 +0000

受け入れられた答えを少し更新して、あなたがそのような

find $DIR -exec stat -c '%F' {} \; | sort | uniq -c | sort -rn
```のdirのカウントをしたい場合

関連する質問

6
10
7
5
8