有没有办法返回给定磁盘上包含多个图像的所有文件夹的列表?
搜索应该是递归的,但 X 不应该。
X=100 的示例:
Folder A
|_ folder A1 (containing 100 pictures)
|_ folder A2 (containing 50 pictures)
|_ 50 pictures
应仅返回“文件夹 A1”。
答案1
我假设所有图片都以.png
and结尾X=100
find ./ -type d -exec sh -c 'count=$(ls "${0}"/*.png | wc -l); if [ "${count}" -ge 100 ];then echo "${0}"; fi ' {} \;
编辑
它可以扩展到任意数量extensions
和任意值的文件X
,如下所示
export files='png jpg gif'
export X='100'
find ./ -type d -exec \
sh -c 'count=$(for i in ${files}; do ls "${0}"/*.${i};done | wc -l); \
if [ "${count}" -ge "${X}" ];then echo "${0}"; fi ' {} \;
答案2
对于每个图像,打印其所在目录的名称:
find \( -name \*.png -or -name \*.gif -or -name \*.jpg \) -printf '%h\n' |
uniq 需要排序输入,但find
打印文件相当随机。 (在我的测试中,甚至find -depth
没有帮助,不要问我为什么。)
sort |
对于每个目录名称,请告诉我们它出现的频率:
uniq -c |
最后,过滤我们想要的行:
while read count dir; do
if [ "$count" -ge 100 ]; then echo "$count $dir"; fi
done