最も簡単な方法は find /path/to/search -ls | wc -l
Findは、すべてのファイルとフォルダーをウォークスルーするために使用されます。
-ls
すべての名前をリスト(印刷)します。これはデフォルトであり、省略してもほとんどすべてのシステムで同じように機能します。(ほとんどの場合、デフォルトが異なる場合があるため)。これを明示的に使用するのは良い習慣です。
find /path/to/search -ls
パーツを使用するだけで、すべてのファイルとディレクトリが画面に出力されます。
wc
単語数です。-l
オプションでは、行数をカウントすることを伝えます。
いくつかの方法で使用できます。
最初のオプションは、wcにファイルを開いて、そのファイル内の行、単語、文字の数をカウントさせます。2番目のオプションは同じことを行いますが、ファイル名なしでstdinから読み取ります。
コマンドをパイプで組み合わせることができます|
。最初のコマンドの出力は、2番目のコマンドの入力にパイプされます。したがってfind /path/to/search -ls | wc -l
、findを使用してすべてのファイルとディレクトリをリストし、出力をwcにフィードします。その後、WCは行数をカウントします。
(他の代替手段は `ls | wc 'でしたが、findははるかに柔軟であり、学習に適したツールです。)
[コメント後に編集]
findとexecを組み合わせると便利な場合があります。
たとえばfind / -type d ! \( -path proc -o -path dev -o -path .snap \) -maxdepth 1 -exec echo starting a find to count to files in in {} \;
、/内のすべてのディレクトリを一覧表示し、検索したくないディレクトリを除外します。それぞれの前のコマンドをトリガーして、/内のフォルダーごとのファイルの合計を取得できます。
しかしながら:
- これは、GNU固有の拡張-maxdepthを使用します。
Linuxで動作しますが、UNIXだけでは動作しません。
- 私はあなたが実際にすべてのサブディレクトリにいくつかのfoファイルを必要としているのではないかと思います。