再帰的ではなくディレクトリ内のファイル数をカウントする方法


30

簡単な質問です。サブディレクトリを含めてそれを行う方法を示す答えを見ましが、現在のディレクトリのみにあるファイル(フォルダではない)の数を知りたいです。ありがとう。

回答:


60
ls -F |grep -v / | wc -l
  1. ls -F すべてのファイルをリストし、エントリにインジケータ(* / => @ |のいずれか)を追加します
  2. grep -v /スラッシュを含ま ないすべてのde文字列を保持する
  3. wc -l 行数を数える

ディレクトリを除くすべてのリスト。
トム

それを解体してセクションを説明してくれて本当に感謝しています。
bcsteeve

1
すべての答えが私の問題を解決しますが、私はこれを文書化された、そして最も理解しやすいものとして選択しています。しかし、みんなに感謝します!
bcsteeve

15

このonelinerを試してください:

find -maxdepth 1 -type f | wc -l

これは良いことです。ファイルのみで、他に何もありません:
thom

これにより、リンクと特殊文字デバイスがスキップされます。
ojblass

ここでの答えはすべてうまくいきます!最初に、ありがとう。第二に...どうやって選ぶの?
bcsteeve

6

これを試して

ls -al | grep ^[-] | wc -l
  1. ls -al -すべてのファイルを長いリスト形式でリストする
  2. grep ^[-] -「-」で始まる文字列を検索します
  3. wc -l -行数を数える

ソフトリンクはどうですか?ハードリンクされたファイルはどうですか?

素敵なもの、ファイルとリンクのみ、他には何もありません。
トム

ソフト/ハードリンクの場合は交換してください張り出す-ことでl
andr3w

それを解体してセクションを説明してくれて本当に感謝しています。
bcsteeve

2

私はBashで遊ぶのが好きなので、トムの答えを追加したいだけです。ここに行く:

echo "Directory $(pwd) has $(ls -F |grep -v / | wc -l) files"

以下は、私の/dataディレクトリの結果の例です。

Directory /data has 580569 file(s).

以下が私の説明です。

  1. echo double-quoted-message 望ましいメッセージを出力します。
  2. $(any-desirable-valid-command)の二重引用符で囲まれたメッセージ内に、echo関連するコマンド実行の結果が出力されます。
  3. pwd 現在のディレクトリを印刷します。
  4. ls -Fすべてのファイルをリストし、インジケータ(* / => @ |のいずれか)をエントリに追加します。これをトムの答えからコピーしました。
  5. grep -v /は、プレーンテキストを検索するためのコマンドです。-v /パラメーターは、スラッシュを含まないすべての文字列を保持します。
  6. wc -l 行カウントを印刷します。

私はこの質問が3歳であることを知っています。別の答えを追加したいという衝動を抱くことができません。


2

あなたがいる場合はtree、システムにインストールしますが、このコマンドを使用することができます。

tree -L 1 /path/to/your/directory | tail -n 1

そのディレクトリ内のファイルとディレクトリの数が表示されます。

-L n 検索の深さを示します。

あなたは、インストールすることができますtreesudo apt-get install tree


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.