我有一堆文件是这样命名的:
file.jpg?sw=450&sh=450
我想批量重命名它们,删除那个可怕的扩展名并得到这个:
file.jpg
我尝试了这个脚本:
for file in *'.jpg?sw=450&sh=450'; do mv "$file" "${file%}".jpg; done
还有这个脚本:
for file in *'.jpg?sw=450&sh=450'; do mv "$file" "${file%}'.jpg?sw=450&sh=450'".jpg; done
发生的情况是我得到这个结果:
文件.jpg?SW=450&SH=450.jpg
Bash 是一种方法,尽管我可能会考虑使用rename
,它根据正则表达式重命名。 考虑:
$ rename 's/.jpg?.*$/.jpg/' *.jpg?*
这说:
- 给定与全球
*.jpg?*
匹配的文件
替换 - 文件名中出现的.jpg,这些后面有一个问号,并将后面的所有字符替换到末尾:
/.jpg?.*$/
- 使用简单的字符串
.jpg