Bash:多种模式匹配

nix*_*win 4 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
Run Code Online (Sandbox Code Playgroud)

hmo*_*liu 10

只需添加您想要处理的exensions; 例如:

for f in *.png *.tif *.gif; do
Run Code Online (Sandbox Code Playgroud)

要不就:

for f in *.{png,tif,gif}; do
Run Code Online (Sandbox Code Playgroud)

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

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