如何重命名一堆文件

How to rename a bunch of files

我有一堆以 "NCI_" 开头的文件,如何重命名它们以 "NCIB_" 开头而不是 "NCI_" 我尝试在包含文件的文件夹中使用以下命令:

rename 's/NCI_/NCIB_/' *

但是没有用。有人可以帮忙吗?

有两个名为 rename 的工具,一个来自 util-linux,另一个是用 Perl 编写的。 Perl 版本有时在包管理器中可用 prenameperl-rename.

检查 rename --help 以了解您拥有的是哪一个。 util-linux rename 打印如下内容:

$ rename --help

Usage:
 rename [options] <expression> <replacement> <file>...
...

Perl rename 打印出这样的东西(它在我的 Arch Linux 系统上被称为 perl-rename):

$ perl-rename --help
Usage: perl-rename [OPTION]... PERLEXPR FILE...
Rename FILE(s) using PERLEXPR on each filename.
...

使用 Perl 重命名,根据其在您系统上的可执行文件的名称,您的命令应该有效:

$ perl-rename 's/NCI_/NCIB_/' *

但是如果你有util-linux版本,那么它应该是这样的:

$ rename NCI_ NCIB_ *

您可以使用如下所示的重命名命令:

rename NCI_ NCIB_ *

查看示例输出的屏幕截图。

也许像

find . -name "NCI_*" -exec bash -c 'mv [=10=] ${0/NCI_/NCIB_}' {} \;

查找文件并使用 mv 将旧字符串替换为新字符串来执行重命名。