Bash输出具有特定名称的所有文件的图像尺寸

时间:2016-08-23 20:51:51

标签: bash imagemagick

我想浏览音乐文件夹中的专辑图片图片,

  1. 确保所有专辑封面均为正方形(宽度=高度)
  2. 确保相册封面的最小宽度为500px
  3. 我找到了几件可以完成这些工作的东西,但是我用bash痛苦地慢了,并且无法解决这个问题。我最近来的是:

    find /mnt/2TB_1/Music/Archive/Complete -mindepth 2 -maxdepth 2 -type d -exec echo identify -format "%wx%h" "{}/folder.jpg" ';' -fprint0 /mnt/2TB_1/Music/output.txt
    

    这是查看正确的文件夹深度。当我运行它时,我的命令提示符显示所有正确的folder.jpgs的维度,而output.txt唯一文件具有路径(没有换行符)。但是,我真的需要它们在一个地方(最好是在output.txt文件中,因为要查看很多folder.jpg文件)。

    我不会拒绝执行我提到的过滤的bash脚本,但我非常愿意接受以下输出:

    w  xh   path
    500x500 /mnt/2TB_1/Music/Archive/Complete/Artist1/Album1/folder.jpg
    500x500 /mnt/2TB_1/Music/Archive/Complete/Artist1/Album2/folder.jpg
    350x350 /mnt/2TB_1/Music/Archive/Complete/Artist2/Album1/folder.jpg
    

    从那里,我可以把它扔进电子表格并做analasys。

1 个答案:

答案 0 :(得分:1)

不确定问题是什么,或文件的外观如何,但这应该接近你想要的内容:

find /mnt/2TB_1 -name folder.jpg -exec identify -format "%G %M\n" {} \;

您可以根据需要再次添加所有排除项和深度和内容,或者只删除Excel中不需要的内容。

如果您希望输出到文件(称为list.txt),请使用:

find ... > list.txt

如果您想分析该文件并找到不是正方形或窄于500像素的图像,您可以使用awk,如下所示:

awk -F'[x ]' '($1!=$2)||($1<500)' list.txt

-F'[x ]'告诉awk使用维度中的x或空格分割每行的字段。这意味着宽度放在字段$1中,高度放在字段$2中。数学很容易。