在 linux 中重命名文件名的第一部分?

rename first part of the filename in linux?

我有很多以 processConfig- 开头的文件。我想将其重命名为 processCfg-。在 linux 中将文件名的第一部分更改为 processCfg- 的简单方法是什么?

但我不想重命名此文件 processConfig.json,因为它与我的前缀不匹配。

> ls -lrth
total 467
-rw-r--r--  1 david  staff   9.8K May 26 15:14 processConfig-data-1234.json
-rw-r--r--  1 david  staff    11K May 26 15:14 processConfig-data-8762.json
-rw-r--r--  1 david  staff   4.9K May 26 15:14 processConfig-dataHold-1.json
-rw-r--r--  1 david  staff   6.6K May 26 15:14 processConfig-letter.json
-rw-r--r--  1 david  staff   5.6K May 26 16:44 processConfig-data-90987.json
-rw-r--r--  1 david  staff   284K May 28 18:44 processConfig.json

像这样:

rename -n 's/^processConfig-/processCfg-/' processConfig-*.json

当输出看起来不错时删除 -n 开关以真正重命名。

man rename

有其他同名工具可能无法做到这一点,所以要小心。

util-linux 包中的重命名命令不会。

如果你运行以下命令(GNU)

$ file "$(readlink -f "$(type -p rename)")"

并且您的结果包含 Perl script, ASCII text executable 而不包含 ELF,那么这似乎是正确的工具 =)

如果不是,将其设为 Debian 的默认值(通常已经是这种情况)和 Ubuntu 之类的派生词:

$ sudo apt install rename
$ sudo update-alternatives --set rename /usr/bin/file-rename

如果您在其他发行版中没有此命令,请搜索您的包管理器进行安装或 do it manually(无依赖...)


这个工具最初是由 Perl 之父 Larry Wall 编写的。