Linux imagemagik按目录转换文件

Linux imagemagik按目录转换文件,linux,imagemagick,Linux,Imagemagick,我编写了这个简单的shell脚本来使用imagemagik转换JPG。它的作品很好,但我想包括PNG,GIF,jpeg等。。。在查找的每次迭代中通过脚本传递文件扩展名时。我确实更喜欢这种在查找上循环的方法,这样我可以更好地报告处理的每个项目,并允许使用更可伸缩的脚本向每个进程添加其他大小和转换。(而不是简单的convert*命令。) 有什么建议吗 find cdn/ -name '*.jpg' -print | sort | while read f; do b=$(basename

我编写了这个简单的shell脚本来使用imagemagik转换JPG。它的作品很好,但我想包括PNG,GIF,jpeg等。。。在查找的每次迭代中通过脚本传递文件扩展名时。我确实更喜欢这种在查找上循环的方法,这样我可以更好地报告处理的每个项目,并允许使用更可伸缩的脚本向每个进程添加其他大小和转换。(而不是简单的convert*命令。)

有什么建议吗

find cdn/ -name '*.jpg' -print |  sort | 
while read f; 
 do 
 b=$(basename $f .jpg)
 in="${b}.jpg"
 thumb="${b}_150x150.jpg" 
if [ -e $thumb ]; 
then 
 true  
else 
 convert -resize 150 $in $thumb   
fi

done

让它更模块化,调用第二个脚本来处理图像文件

find /path -type f -print |
while read filename ; do
     sh /path/to/process_image $filename
done
在process_image脚本中,您可以根据文件的大小选择要执行的操作 扩展名或文件类型。该脚本可以调用其他脚本,具体取决于您所执行的操作 要根据图像类型、大小等来做

将问题分为1)查找文件,2)决定如何处理文件,3)处理文件。模块化将把问题分成几个部分,你可以单独处理。

+1“将问题分成1)查找文件,2)决定如何处理文件,3)处理文件。模块化将把问题分成几个部分,你可以单独处理。”如前所述。这允许使用更可扩展的方法来添加更多处理

这样,您就不需要通过扩展名传递文件。这就是你想要的,通过扩展名传递文件吗?你一定要这么做吗

而且

  • 使用
    -iname'*.jpg'
    而不是
    -name'*.jpg'
    进行不区分大小写的搜索
  • 使用find上的more
    -iname
    参数查找您想要的所有其他扩展。例如:

    find cdn/\(-iname'*.jpg'-o-iname'*.jpeg'-o-iname'*.png'-o-iname'*.gif'\)打印


也就是说,您可以在一个过程中找到所有需要的文件,而不是使用“查找一遍又一遍”来查找不同的扩展名文件

读取
man file
:如果
$f
是图像文件,则类似
file-b的字符串--mime类型$f|sed's | \([^/]*\)/.*\1 |
将返回“image”。