从终端重命名文件扩展名并不按预期工作

时间:2018-05-31 14:51:07

标签: 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'".jpg; done

我得到的结果是什么:

file.jpg SW = 450安培; SH = 450.jpg

1 个答案:

答案 0 :(得分:1)

Bash是一种方法,虽然我可能会考虑使用基于正则表达式重命名的rename。考虑:

$ rename 's/\.jpg\?.*$/.jpg/' *.jpg\?*

这说:

  • 鉴于与glob *.jpg\?*
  • 匹配的文件
  • 在文件名中替换.jpg后面会出现问号的所有字符以及在结尾之后的所有字符:/\.jpg\?.*$/
  • 使用简单字符串.jpg