在 Linux 中 rename 命令的用法

使用 mv 命令重命名多个文件和目录可能是一个繁琐的过程,因为它涉及使用管道,循环等编写复杂命令。

这是 rename 命令派上用场的地方。它通过使用指定的替换替换其名称中的搜索表达式来重命名给定文件。

在本教程中,我们将解释如何使用该 rename 命令批量重命名文件。

安装   rename

rename 命令有两个版本,具有不同的语法和功能。我们将使用 rename 命令的 Perl 版本。

如果您的系统上未安装此版本,请使用 Linux 发行版的软件包管理器进行安装:

  • 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

让我们更详细地解释一下命令:

  • s/search_pattern/replacement/ - 替换模式。
  • .css - 搜索模式。它是替换运算符中的第一个参数。 rename 命令将在给定的文件名中搜索此模式,如果找到它将用 replace 参数替换它。
  • .scss - 更换。替换运算符中的第二个参数。
  • *.css - 所有扩展名为 “.css” 的文件。通配符 (*) 是用于表示零个,一个或多个字符的符号。

在运行实际命令并重命名文件和目录之前,最好使用 -n 将执行“空运行”  的选项并显示将重命名的文件:

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 to 覆盖现有文件:

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 命令的一些常见示例:

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

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 正则表达式一次重命名多个文件。