使用find匹配文件扩展名时忽略大小写

时间:2017-12-14 11:20:56

标签: linux bash

我前一段时间写了一个bash脚本,用Image Magick调整目录中所有图像的大小和压缩。

# Usage: smartResize "2400x2400>"                                                                                                                  
function smartResize() {                                                                                                                    
    find ./ -name "*.jpg" -exec magick mogrify -resize $1 -sampling-factor 4:2:0 -strip -interlace JPEG -quality 85 -colorspace RGB {} \;   
    find ./ -name "*.JPG" -exec magick mogrify -resize $1 -sampling-factor 4:2:0 -strip -interlace JPEG -quality 85 -colorspace RGB {} \;   
    find ./ -name "*.jpeg" -exec magick mogrify -resize $1 -sampling-factor 4:2:0 -strip -interlace JPEG -quality 85 -colorspace RGB {} \;  
    find ./ -name "*.JPEG" -exec magick mogrify -resize $1 -sampling-factor 4:2:0 -strip -interlace JPEG -quality 85 -colorspace RGB {} \;  
}   

我必须添加额外的行来查找.jpg扩展的一些替代案例。我不是特别喜欢但完成了工作。

是否有人更了解如何处理区分大小写以及e扩展中的可选jpeg

n.b。我在Cmder中运行它:Windows上的Git Bash。

1 个答案:

答案 0 :(得分:1)

<{1}} GNU版本的find标记-iname,可以对文件名称小球进行不区分大小写的匹配,

find ./ -iname '*.jpg'

或者如果您使用的是没有GNU实用程序的系统,请使用glob

的括号表达式
find ./ -name '*.[Jj][Pp][Gg]'

如果您对多个名称过滤器感兴趣,只需使用-o表达式包含多个名称globs

find ./ \( -iname "*.jpg" -o -iname "*.jpeg" \)