重命名多个文件以从文件名中删除通用后缀

jmr*_*cha 6 linux command-line ubuntu

我有一个目录(Linux 用户),其中包含许多文件,其中每个文件名的末尾都添加了 [!],以便每个文件读出为:

  • foo 东西 [!].zip
  • 酒吧的东西[!].zip
  • 你好世界 [!].zip
  • 等等。

批量重命名这些文件以从这些文件名中删除结尾 [!] 字符组合的最快方法是什么?

les*_*ana 8

您可以rename像这样使用该工具

rename 's/\ \[\!\]//' *.zip
Run Code Online (Sandbox Code Playgroud)

我建议你首先添加-n开关,这会导致rename只显示它会做什么,而不是重命名任何文件。

rename -n 's/\ \[\!\]//' *.zip
Run Code Online (Sandbox Code Playgroud)

请注意,这只会删除[!]文件名中第一次出现的 ,前提是它前面有一个空格,而不管它是否在文件名的末尾。


的基本语法rename

rename 's/from/to/' filenames
Run Code Online (Sandbox Code Playgroud)

将替换fromto所有文件名。

这里有一个详细的解释:https : //www.computerhope.com/unix/rename.htm


请注意,有两个rename命令:一个来自 util-linux 包,另一个来自 perl 包。我上面提到的命令是 perl 变体。perl 变体更受欢迎和有用。通常当人们谈论时,rename他们指的是 perl 变体。

在 debian(因此 ubuntu)rename中默认是 perl 变体。/sf/ask/1580443721/

在 arch linux 中rename是 util-linux 变体,而perl-rename在 perl 变体中。https://bbs.archlinux.org/viewtopic.php?id=85128

您可以通过以下方式查看正在使用的版本:

$ rename --version
rename from util-linux 2.30.1
$ perl-rename --version
perl-rename 1.9
Run Code Online (Sandbox Code Playgroud)