如何在 Linux 中批量重命名一组文件名?

use*_*558 9 bash rename

我有一个文件夹,其中包含名为:

pic001-2.png
pic002-2.png
pic003-2.png 
Run Code Online (Sandbox Code Playgroud)

我如何将它们重命名为以下内​​容?

pic001.png
pic002.png
pic003.png 
Run Code Online (Sandbox Code Playgroud)

我试过,mv "pic*-2.png" "pic*.png"但不断收到错误。

Alu*_* G. 11

这将删除-2在每个文件名中找到的第一个:

for f in pic*-2.png; do
  mv "$f" "${f/-2/}"
done
Run Code Online (Sandbox Code Playgroud)

要测试它,只需添加echo到该mv行。


Fli*_*mzy 9

您需要适当命名的“重命名”命令!

尝试这样的事情:

rename 's/(pic\d+)-\d\.jpg/$1.jpg/' pic*.jpg
Run Code Online (Sandbox Code Playgroud)

它采用 perl 正则表达式作为第一个参数,因此您的模式匹配和操作选项非常广泛。有关完整详细信息,请参阅 rename(1) 手册页。