计算有多少目录至少有一个具有特定扩展名的文件

计算有多少目录至少有一个具有特定扩展名的文件

我如何知道有多少个目录(在当前目录中)至少有 1 个扩展名为 .mp3 的文件。

不需要递归——当前目录的目录结构例如:

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

该命令应返回有 2 个包含 mp3 文件的目录。

答案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."'

外部“find”选择当前目录中的所有子目录。然后对每个文件进行下降,如果它们包含至少 1 个 mp3 文件(包括隐藏文件)并且以不区分大小写的方式在其中进行非递归查找。

相关内容