我写了这个简单的shell脚本来使用imagemagik转换jpgs。它工作正常,但我想包括pngs,gifs,jpeg等...同时通过脚本为find的每次迭代传递文件扩展名。我更喜欢这种循环查找的方法,这样我就可以更好地报告处理的每个项目,并允许一个更具伸缩性的脚本,为每个进程添加其他大小和转换。 (而不是简单的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
答案 0 :(得分:1)
使其更加模块化,调用第二个脚本来处理图像文件。
find /path -type f -print |
while read filename ; do
sh /path/to/process_image $filename
done
在 process_image 脚本中,您可以根据文件选择做什么 扩展名或文件类型。该脚本可以根据您的要求调用其他脚本 想要根据图像类型,大小等做。
将问题分解为1)找到文件,2)决定如何处理文件和3)处理文件。使其模块化将把问题分成可以单独处理的部分。
答案 1 :(得分:1)
+1“将问题分解为1”找到文件,2)决定如何处理文件和3)处理文件。使其模块化将把问题分成可以单独处理的部分。“如前所述。这允许更加可扩展的方法来添加更多处理。
这样,您无需通过扩展名传递文件。这是你想要的,通过扩展传递文件?你必须这样做吗?
此外,
-iname '*.jpg'
代替-name '*.jpg'
,以便进行不区分大小写的搜索。在查找中使用更多-iname
参数可查找所需的所有其他扩展程序。例如,
find cdn/ \(-iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.gif' \) -print
即,您可以在一次通过中找到所需的所有文件,而不是使用查找一遍又一遍来查找不同的扩展文件。