使用mv命令重命名多个文件和目录可能是一个繁琐的过程,因为它涉及使用管道,循环等编写复杂命令。
这就是rename命令派上用场的地方。 它通过使用指定的替换项替换其名称中的搜索表达式来重命名给定的文件。
在本教程中,我们将解释如何使用rename命令批量处理重命名文件。
安装rename
rename命令有两个版本,具有不同的语法和功能。 我们将使用Perl版本的rename命令。
如果您的系统上未安装此版本,请使用Linux发行版的软件包管理器进行安装:
sudo apt update
sudo apt install rename
[linuxidc@localhost ]$ sudo yum install prename
Arch Linux
yay perl-rename
使用rename
以下是rename命令的一般语法:
rename [OPTIONS] perlexpr files
rename命令基本上是一个Perl脚本。 它将根据指定的perlexpr正则表达式重命名给定文件。 您可以在此处阅读有关Perl正则表达式的信息。
例如,以下命令将所有.css文件的扩展名更改为.scss:
[linuxidc@localhost ]$ prename 's/.css/.scss/' *.css
让我们更详细地解释一下这个命令:
s/search_pattern/replacement/ - 替换运算符。
.css - 搜索模式。 它是替换运算符中的第一个参数。 rename命令将在给定的文件名中搜索此模式,如果找到它将用replace参数替换它。
.scss - 替换。 替换运算符中的第二个参数。
*.css - 所有扩展名为“.css”的文件。 通配符(*)是用于表示零个,一个或多个字符的符号。
在运行实际命令并重命名文件和目录之前,最好使用-n选项执行“预演”并显示将重命名的文件:
[linuxidc@localhost ]$ prename -n 's/.css/.scss/' *.css
输出如下:
linuxidc.com.css -> linuxidc.com.scss
linuxidc.css -> linuxidc.scss
linuxmi.css -> linuxmi.scss
默认情况下,rename命令不会覆盖现有文件。 使用-f选项告诉重命名覆盖现有文件:
[linuxidc@localhost ]$ prename -f 's/.css/.scss/' *.css
如果要重命名以打印成功重命名的文件的名称,请使用-v(详细)选项:
[linuxidc@localhost ]$ prename -v 's/.css/.scss/' *.css
输出如下:
linuxidc.css -> linuxidc.scss
linuxmi.css -> linuxmi.scss
->
rename示例
以下是如何使用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正则表达式一次重命名多个文件。
如果您有任何问题或反馈,请随时发表评论。