Bash:多重模式匹配

标签 bash scripting pattern-matching

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

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

最佳答案

只需添加您要处理的扩展;例如:

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"' {} {} \; 

关于Bash:多重模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5846860/

相关文章:

php - 使用 preg_match 查找字符串是否包含脚本标签

scala - Akka Actor - 按通用类型接收模式匹配

pattern-matching - 如何在单个 Racket 的比赛模式中多次使用同一个绑定(bind)?

java - 在 Java 中执行 shell 脚本并读取输出

linux - 为什么这个linux命令会影响环境变量?

python - 将脚本的输出保存为 txt (Windows)

macos - 有什么方法可以在 AppleScript 中暂时暂停脚本吗?

perl - 从文件中读取并将内容与变量进行比较

python - 调用的子进程不按顺序执行 bash 脚本

python - 找不到 Bazel 构建包