Shell脚本如何忽略大小写进行文件匹配?求解决方案
解决Shell脚本中忽略大小写匹配文件名的问题
以下几种方法可以实现忽略大小写的文件名匹配,无需手动重命名文件:
方法1:Bash下开启大小写不敏感通配
Bash内置nocaseglob选项,开启后通配符会忽略大小写:
# 开启大小写不敏感匹配 shopt -s nocaseglob # 执行移动操作,此时fav*.jpg会匹配Fav*.jpg、FAV*.jpg等 mv fav*.jpg target_directory/ # 可选:关闭该选项,恢复默认的大小写敏感匹配 shopt -u nocaseglob
方法2:显式指定字符大小写范围
如果需要兼容更多Shell环境(比如sh),可以用字符集通配符,把每个可能大小写的字符用[]包裹:
# [Ff]匹配F或f,[Aa]匹配A或a,[Vv]匹配V或v mv [Ff][Aa][Vv]*.jpg target_directory/
方法3:用find命令实现忽略大小写查找
如果需要更灵活的文件查找(比如递归查找子目录),可以用find的-iname选项(忽略大小写的文件名匹配):
# -maxdepth 1 限制只查找当前目录,-type f 确保是文件 find . -maxdepth 1 -type f -iname 'fav*.jpg' -exec mv {} target_directory/ \;
内容的提问来源于stack exchange,提问作者ScorDesigner
相关产品推荐
相关产品推荐

