如何在Linux中重命名文件和目录

重命名文件是您在Linux系统上经常需要执行的最基本的任务之一。 您可以使用GUI文件管理器或通过命令行终端来重命名文件。

重命名单个文件很容易,但是一次重命名多个文件可能是一个挑战,特别是对于Linux新手而言。

在本教程中,我们将向您展示如何使用 mvrename 命令来重命名文件和目录。

使用重命名文件 mv 命令#

mv 命令(缺少移动)用于将文件重命名或从一个位置移动到另一位置。 的语法 mv 命令如下:

mv [OPTIONS] source destination

source 可以是一个或多个文件或目录, destination 可以是单个文件或目录。

  • 如果您将多个文件指定为 sourcedestination 必须是目录。 在这种情况下, source 文件被移动到目标目录。
  • 如果您将一个文件指定为 sourcedestination 目标是现有目录,然后将文件移动到指定目录。
  • 要重命名文件,您需要将一个文件指定为 source 和一个文件作为 destination 目标。

例如,重命名文件 file1.txtfile2.txt 您将运行:

mv file1.txt file2.txt

使用重命名多个文件 mv 命令#

mv 该命令一次只能重命名一个文件,但可以与其他命令(例如, find 或在bash内 for 要么 while 循环重命名多个文件。

以下示例显示了如何使用Bash for循环重命名所有对象 .html 通过更改当前目录中的文件 .html 扩展到 .php

for f in *.html; do
    mv -- "$f" "${f%.html}.php"
done

让我们逐行分析代码:

  • 第一行创建一个 for 循环遍历所有文件 .html
  • 第二行适用于列表的每一项,并将文件移至新的列表 .html.php。 那个部分 ${file%.html} 正在使用shell参数扩展删除 .html 文件名的一部分。
  • done 指示循环段的结尾。

这是一个使用示例 mv 与…结合 find 实现与以上相同:

find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' ;

find 命令传递所有以结尾的文件 .html 在当前目录中 mv 一一使用 -exec 选项。 字符串 {} 是当前正在处理的文件的名称。

从上面的示例中可以看到,使用 mv 命令不是一件容易的事,因为它需要对Bash脚本有充分的了解。

使用重命名文件 rename 命令#

rename 命令用于重命名多个文件。 该命令比 mv 因为它需要一些正则表达式的基础知识。

有两个版本 rename 使用不同语法的命令。 在本教程中,我们将使用Perl版本的 rename 命令。 如果您的系统上未安装此版本,则可以使用发行版的程序包管理器轻松安装它。

  • 安装 rename 在Ubuntu和Debian上

    sudo apt install rename
  • 安装 rename 在CentOS和Fedora上

    sudo yum install prename
  • 安装 rename 在Arch Linux上

    yay perl-rename ## or yaourt -S perl-rename

的语法 rename 命令如下:

rename [OPTIONS] perlexpr files

rename 命令将重命名 files 根据指定 perlexpr 正则表达式。 您可以在此处阅读有关perl正则表达式的更多信息。

以下示例将更改所有带有扩展名的文件 .html.php

rename 's/.html/.php/' *.html

您可以使用 -n 选项打印要重命名的文件的名称,而不重命名它们。

rename -n 's/.html/.php/' *.html

输出将如下所示:

rename(file-90.html, file-90.php)
rename(file-91.html, file-91.php)
rename(file-92.html, file-92.php)
rename(file-93.html, file-93.php)
rename(file-94.html, file-94.php)

默认情况下, rename 该命令不会覆盖现有文件。 通过 -f 允许覆盖现有文件的选项:

rename -f 's/.html/.php/' *.html

以下是一些有关如何使用 rename 命令:

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

    rename 'y/ /_/' *
  • 将文件名转换为小写

    rename 'y/A-Z/a-z/' *
  • 将文件名转换为大写

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

结论#

我们已经向您展示了如何使用 mvrename 命令来重命名文件。

还有其他命令可以在Linux中重命名文件,例如 mmv 。 受到命令行威胁的新Linux用户可以使用GUI批处理重命名工具,例如Métamorphose。

如果您有任何疑问或反馈,请随时发表评论。

重命名MV终端

Sidebar