列出包含超过 X 个图像的文件夹

列出包含超过 X 个图像的文件夹

有没有办法返回给定磁盘上包含多个图像的所有文件夹的列表?

搜索应该是递归的,但 X 不应该。

X=100 的示例:

Folder A
|_ folder A1 (containing 100 pictures)
|_ folder A2 (containing 50 pictures)
|_ 50 pictures

应仅返回“文件夹 A1”。

答案1

我假设所有图片都以.pngand结尾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

相关内容