Terminal 从终端重命名文件扩展名无法按预期工作

Terminal 从终端重命名文件扩展名无法按预期工作,terminal,command,rename,Terminal,Command,Rename,我有一堆文件,名称如下: 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

我有一堆文件,名称如下:

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
还有这个脚本:

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
我得到的结果是:


< P>文件.jpg?sw=450和SH=450。JPG

BASH是其中的一种方式,尽管我可能会考虑使用重命名,这是基于正则表达式的重命名。考虑:

$ rename 's/\.jpg\?.*$/.jpg/' *.jpg\?*
上面说:

给定与glob*.jpg\匹配的文件* 在文件名中,替换出现的.jpg,这些文件后面有问号,后面有所有字符:/\.jpg\*$/ 使用简单的string.jpg