特定のフォルダにのみファイル数を保存する

特定のフォルダにのみファイル数を保存する

私はこのスクリプトを使用してデフォルトフォルダ内のファイル数を保存しますが、そのデフォルトフォルダ内のサブフォルダも計算します。 nfiles=$(ls -1 /home/userA/mainfolder | wc -l)フォルダ以外のファイルのみを含めるように変更する方法について提案がありますか?

答え1

このような用途には使用しないでくださいfind

機能するには、移植不能なGNU拡張が必要な​​だけでなく、stat()検索するすべてのファイルも必要です。ls一方、印刷できない内容を参照するには、? を使用して行ごとに-1現在のディレクトリのディレクトリエントリを簡単に一覧表示できます。-q疑問符\nエライン含む)/、各ディレクトリのリストに追加されます。

このようにして、-c現在のディレクトリ内のドットではないファイルの簡単な数に対して、次のことができます。

ls -1pq | grep -c -v /

プロセス全体がfind実際よりも潜在的に高速であるだけでなく、POSIX方式で実行されます。

答え2

代わりに分析するls、あなたはそれを使用することができますfind

find . -maxdepth 1 -type f ! -name ".*" | wc -l

.()で始まるファイルを除いて、-type f現在のディレクトリ()ですべてのファイルを検索し、結果を渡して行数を計算します。.! -name ".*"wc

スクリプトで変数として使用するには:

nfiles=$(find . -maxdepth 1 -type f ! -name ".*" | wc -l)

関連情報