在Linux中使用rename命令重命名多个文件/目录

使用mv命令重命名多个文件和目录可能是一个乏味的过程,因为它涉及使用管道,循环等编写复杂的命令。这就是rename命令派上用场的地方

3 min read
By myfreax
在Linux中使用rename命令重命名多个文件/目录

使用mv命令重命名多个文件和目录可能是一个乏味的过程,因为它涉及使用管道,循环等编写复杂的命令。这就是rename命令派上用场的地方。它通过使用指定的替换名替换搜索表达式的名称来重命名指定的文件。

在本教程中,我们将说明如何使用rename命令批量重命名文件。包括安装rename在所有Linux发行版上,rename命令的语法和常见选项,尝试执行rename打印输出,而不实际执行,我们还举例一些例子如用下划线替换文件名中的空格,将.jpeg和.JPG文件名重命名为.jpg,从文件名中删除.bak,将文件名转换为大写,将文件名转换为小写。

安装rename

rename命令的两个版本,具有不同的语法和功能。我们将使用rename命令的Perl版本。如果您的系统上未安装此版本,请使用Linux发行版的软件包管理器进行安装rename。

Ubuntu和Debian

sudo apt update
sudo apt install rename

CentOS和Fedora

sudo yum install prename

Arch Linux

yay perl-rename

使用rename

以下是rename命令的语法:

rename [OPTIONS] perlexpr files

rename命令基本上是Perl脚本。它将根据指定的perlexpr正则表达式重命名指定的files。您可以在此处阅读有关Perl正则表达式的更多信息。例如,以下命令会将所有.css文件的扩展名更改为.scss

rename 's/.css/.scss/' *.css

让我们更详细地说明命令,上面rename命令可以映射成s/你的搜索模式/指定你的替换值/ 要替换的模式。

.css是搜索模式。它是替换运算符中的第一个参数。 rename命令将在指定的文件名中搜索此模式,如果找到,它将用替换参数替换。

.scss表示替换参数。替换运算符中的第二个参数。

*.css表示所有扩展名为.css的文件。通配符*是用于表示零个,一个或多个字符的符号。

在运行rename命令并重命名文件或者目录之前,最好使用-n选项执行空运行,reanme将会向您打印将重命名的文件:

rename -n 's/.css/.scss/' *.css

输出将如下所示:

rename(file-0.css, file-0.scss)
rename(file-1.css, file-1.scss)
rename(file-2.css, file-2.scss)
rename(file-3.css, file-3.scss)
rename(file-4.css, file-4.scss)

默认情况下,rename命令不会覆盖现有文件。使用-f选项告诉rename覆盖现有文件:

rename -f 's/.css/.scss/' *.css

如果需要rename打印已成功重命名的文件名称,请使用-v(详细)选项:

rename -v 's/.css/.scss/' *.css
file-0.css renamed as file-0.scss
file-1.css renamed as file-1.scss
file-2.css renamed as file-2.scss
file-3.css renamed as file-3.scss
file-4.css renamed as file-4.scss

rename例子

以下是一些有关如何使用重命名命令的常见示例。

用下划线替换文件名中的空格

rename 'y/ /_/' *

将文件名转换为小写

rename 'y/A-Z/a-z/' *

将文件名转换为大写

rename 'y/a-z/A-Z/' *

从文件名中删除.bak

rename 's/\.bak$//' *.bak

将.jpeg和.JPG文件名重命名为.jpg

rename 's/\.jpe?g$/.jpg/i' *

结论

rename命令允许您使用Perl正则表达式一次重命名多个文件和目录。如果您有任何问题或反馈,请随时发表评论。