ディレクトリ内のファイル数を数えるスクリプト

ディレクトリ内のファイル数を数えるスクリプト

現在、ディレクトリ(サブディレクトリを除く)のファイル数を数えるスクリプトを探しています。各ファイルを繰り返し、ディレクトリでない場合は、数を増やす必要があります。出力はファイル数を表す整数でなければなりません。

私はそれを知っています

find . -type f | wc -l

しかし、私はそれが全体の計算タスクを実行するとは思わない。これは課題なので、正しい方向を教えてほしいと思うといいでしょう。

ベストアンサー1

一般的なファイルだけが必要な場合は、

GNUの使用find:

find . -maxdepth 1 -type f -printf . | wc -c

その他find:

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

-print | wc -l(ファイル名に改行文字が含まれていると機能しないため、これは望ましくありません。)

そしてzsh

files=(*(ND.)); echo $#files

そしてls

ls -Anq | grep -c '^-'

一般ファイルへのシンボリックリンクを含めるには、with GNU、with other、またはwith-type fに変更するか、オプションをに追加します。しかし、得ることができることに注意してください。-xtype ffind-exec test -f {} \;find.-.zsh-Lls偽の否定シンボリックリンクのターゲットタイプを決定できない状況(アクセス権のないディレクトリにあるため)。

通常のファイルだけでなく、あらゆる種類のファイル(シンボルリンク、ディレクトリ、パイプ、デバイス...)が必要な場合:

find . ! -name . -prune -printf . | wc -c

-print | grep -c /(with non-GNU find(ND.)with (ND)zshwithgrep -c '^-'に変更されましたwc -lls

しかし、に変更しない限り、これは重要ではありません。.または..(通常、人々はいつもそこにいるので実際には気にしません)。-A-als

ディレクトリを除くすべての種類のファイルが必要な場合は、次に置き換える(またはディレクトリへのシンボリックリンクも除く)に置き換え、に置き換え-type f、に置き換えます。! -type d! -xtype dzsh.^/lsgrep -c '^-'grep -vc '^d'

隠しファイル! -name '.*'zsh除外するには。DlsA

おすすめ記事