コマンドラインを使用してディレクトリ内のファイル数をどのように取得できますか?

コマンドラインを使用してディレクトリ内のファイル数をどのように取得できますか?

多くのファイルを含むディレクトリがあります。lsカウントを提供するスイッチは表示されません。ファイル数を取得するコマンドライン魔法はありますか?

答え1

「文書」の広範な定義を使用します。

ls | wc -l

(隠しファイルは計算されず、ファイル名に改行文字が含まれていないと仮定します。)

隠しファイルを含め(.および除外..)、改行の問題を回避するには、正式な方法は次のとおりです。

find . ! -name . -prune -print | grep -c /

または再帰的に:

find .//. ! -name . -print | grep -c //

答え2

ファイルの狭い定義の場合:

 find . -maxdepth 1 -type f | wc -l

答え3

役に立つと思いましたが、どのバージョンが必要du --inodesかわかりません。とを使用する代替よりもはるかにdu高速です。findwc

Ubuntu 17.10では、以下が機能します。

du --inodes      # all files and subdirectories
du --inodes -s   # summary
du --inodes -d 2 # depth 2 at most

| sort -nr含まれている inode の数に基づいて降順にソートするために使用されます。

答え4

ls/を使ったwc最も完全な答えはおそらく

ls -Aq | wc -l

ドットファイルの数を数えたい場合

ls -q | wc -l

それ以外の場合。

  • -Aポイントファイルを計算しますが、.合計を省略します..
  • -qls代替非グラフィック文字、特に改行文字を使用して?ファイルごとに1行を出力する

ターミナルから出力ラインを取得するにはls(つまり、パイプしないでwc-1オプションを追加する必要があります。

ls(coreutils 8.23を使用したモーションテスト)

関連情報