安卓系统

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

Linux文件操作常用命令 linux入门实战教程 ls cd mv cp mkdir more cat tail

Linux文件操作常用命令 linux入门实战教程 ls cd mv cp mkdir more cat tail

目录:

Anonim

重命名文件和目录是您在Linux系统上经常需要执行的最基本的任务之一。

重命名单个文件很容易,但是一次重命名多个文件可能是一个挑战,特别是对于Linux新手而言。 您可以使用GUI文件管理器或通过命令行终端重命名文件。

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

使用mv命令重命名文件

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

mv source destination

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

  • 如果将多个文件指定为 source ,则 destination 必须是目录。 在这种情况下, source 文件将移至目标目录。如果您将单个文件指定为 source ,而 destination 目标是现有目录,则该文件将移至指定目录。要重命名文件,您需要指定一个单个文件作为 source ,单个文件作为 destination 目标。

例如,要将文件 file1.txt 重命名为 file2.txt ,可以运行:

mv file1.txt file2.txt

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

mv 命令一次只能重命名一个文件,但可以与其他命令(例如 find 或inside bash for或while循环)一起使用,以重命名多个文件。

下面的示例演示如何使用Bash for循环通过将 .html 扩展名更改为 .php 来重命名当前目录中的所有 .html 文件。

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

让我们逐行分析代码:

  • 第一行创建一个for循环并遍历以 .html 开头的所有文件的列表。第二行应用于该列表的每一项,并将文件移至新文件,以 .php 替换 .html ${file%.html} 正在使用shell参数扩展从文件名中删除 .html 部分。完成表示循环段的结尾。

我们还可以将 mv 命令与 find 结合使用以实现与上述相同的效果。

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

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

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

使用重命名命令重命名文件

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

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

  • 在Ubuntu和Debian上安装重命名

    sudo apt install rename

    在CentOS和Fedora上安装重命名

    sudo yum install prename

    在Arch Linux上安装重命名

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

rename 命令的语法如下:

rename perlexpr files

rename 命令将根据指定的 perlexpr 正则表达式重命名所有 files 。 您可以在此处了解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 'y/ /_/' *

    将文件名转换为小写

    rename 'y/AZ/az/' *

    将文件名转换为大写

    rename 'y/az/AZ/' *

结论

到目前为止,您应该对如何使用 mv rename 命令重命名文件有很好的了解。 当然,还有其他命令可以在Linux中重命名文件,例如 mmv 。 受到命令行威胁的新Linux用户可以使用GUI批处理重命名工具,例如Métamorphose。

重命名MV终端