我如何知道有多少个目录(在当前目录中)至少有 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 文件(包括隐藏文件)并且以不区分大小写的方式在其中进行非递归查找。