特定の拡張子を持つ1つ以上のファイルがあるディレクトリの数を数えます。

特定の拡張子を持つ1つ以上のファイルがあるディレクトリの数を数えます。

.mp3拡張子を持つファイルが少なくとも1つ以上あるディレクトリ(現在のディレクトリ)の数をどのように知りますか?

再帰は必要ありません。現在のディレクトリのディレクトリ構造は、例えば次のようになります。

1/blabla.mp3
2
3/something.mp3
4
5

このコマンドは、mp3ファイルを含む2つのディレクトリを返す必要があります。

答え1

find . -type f -name "*.mp3" -exec dirname {} \; | uniq | wc -l

答え2

find . ! -name . -prune -type d -exec sh -c '
   yes | head -1 |
   find "$1/." ! -name . -prune -type f \
      \( -name '*.[mM][pP]3' -o -name '.*.[mM][pP]3' \) \
      -exec sh -c "read foo" \; -print
' {} {} \; | wc -l |
sh -c 'read n;echo "There are $n dirs with mp3 files."'

外部「検索」は、現在のディレクトリのすべてのサブディレクトリを選択します。その後、各ファイルに少なくとも1つのmp3ファイル(隠しファイルを含む)が含まれている場合は、各ファイルに対して下降を実行し、そのファイル内で大文字と小文字を区別せずに非再帰検索を実行します。

関連情報