拡張子でディレクトリ内のファイル数を計算する

拡張子でディレクトリ内のファイル数を計算する

テスト目的で、各画像ファイルの種類をファイル拡張子(jpg = "yes")で区切って、ディレクトリ内の画像ファイルの数を計算したいと思います。これは、後で各ファイル拡張子に対して操作を実行する他のスクリプトに役立ちます。 JPEGファイルにのみ次のものを使用できますか?

jpg=""
count=`ls -1 *.jpg 2>/dev/null | wc -l`
if [ $count != 0 ]
then
echo jpg files found: $count ; jpg="yes"
fi

ファイル拡張子jpg、png、bmp、rawなどを考慮してwhileこれを行うには、ループを使用する必要がありますか?

ベストアンサー1

私のアプローチは次のとおりです。

  1. ディレクトリ内のすべてのファイルのリスト
  2. 拡張子を抽出
  3. 結果の並べ替え
  4. 各拡張子の発生回数を計算します。

次のようになります(最後のawk呼び出しは純粋に書式設定のためのものです)。

ls -q -U | awk -F . '{print $NF}' | sort | uniq -c | awk '{print $2,$1}'

ls-U(最適化のためにここでソートをスキップするGNUオプションがあるとします。サポートされていない場合は、機能に影響を与えずに安全に削除できます。)

おすすめ記事