Bash:多种模式匹配

时间:2011-05-01 06:23:07

标签: bash scripting pattern-matching

我使用此脚本将目录中的所有.png文件转换为.jpg个文件。如果我想不仅将png文件转换为jif,还要将tif,gif和bmp文件转换为jpg,如何修改此脚本?

  #!/bin/bash
    for f in *.png ; do
        convert "$f" -resize 50% "${f%.*}.jpg"
    done

2 个答案:

答案 0 :(得分:10)

只需添加您要处理的费用;例如:

for f in *.png *.tif *.gif; do

或只是:

for f in *.{png,tif,gif}; do

另一种方法可能是:查找目录或文件夹树中的每个图像文件,并将它们转换为jpg,除非图像已经是jpg文件;例如(未测试):

find . -exec bash -c 'file "$1" | grep "image data" | grep -iv JPEG && convert "$1" -resize 50% "${1%.*}.jpg"' {} {} \; 

答案 1 :(得分:1)

for f in *.{png,tif,gif,bmp}; do