Linux 中快速批量重命名文件

我们经常使用 mv 命令在 Linux 中重命名单个文件。然而,在终端中快速重命名多个或一组文件会使其成为一项非常困难的任务。

Linux 自带了一个非常强大的内置工具,叫做 rename,它可以用于重命名多个文件或文件组、将文件名转换为小写、将文件名转换为大写以及使用 Perl 表达式覆盖文件。

本文将指导您了解使用 rename 在 Linux 中有效地重命名多个文件的基础知识。

什么是重命名?

rename 是一个命令行实用程序,它允许您使用正则表达式一次重命名多个文件,正则表达式是用于匹配字符串中字符组合的模式。此工具对于根据特定模式或规则批量重命名文件特别有用。

rename 命令是 Perl 脚本的一部分,在许多 Linux 发行版中它位于 /usr/bin/ 下。

您可以运行which命令来找出rename命令的位置。

which rename

/usr/bin/rename

重命名命令的基本语法

重命名命令的基本语法是:

rename 's/old_pattern/new_pattern/' files

该命令的具体内容如下:

  • s/old_pattern/new_pattern/:这是 rename 使用的替换命令,它告诉 rename 用 new_pattern 替换 old_pattern。
  • 文件:指定您要重命名的文件。

rename 命令还附带一些可选参数以及指导 rename 命令执行实际工作的强制性 perl 表达式。

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]

  • -v:打印成功重命名的文件的名称。
  • -n:显示哪些文件已被重命名。
  • -f:强制覆盖现有文件。
  • perlexpr:Perl 表达式。

为了更好地理解重命名实用程序,我们在本文中讨论了该命令的一些实际示例。

在 Linux 中安装 Rename

在使用重命名之前,您需要通过运行以下命令确保它已安装在您的系统上。

rename --version

如果尚未安装,您可以使用包管理器进行安装,如图所示。

sudo apt install rename [On Debian, Ubuntu and Mint]
sudo yum install prename [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/rename [On Gentoo Linux]
sudo apk add rename [On Alpine Linux]
sudo pacman -S rename [On Arch Linux]
sudo zypper install rename [On OpenSUSE]
sudo pkg install rename [On FreeBSD]

1. 在 Linux 中更改文件扩展名

假设你有一堆文件,其中 ".html" 扩展名,并且你想重命名所有 ".html" 文件到 ".php" 立刻。

为此,首先更改到包含您的 .html 文件并使用 ls 命令列出所有带有 .html 扩大。

cd /path/to/your/files
ls -l *.html

现在使用重命名命令将文件扩展名从 .html.php

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

命令解释:

  • 's/\.html$/.php/':这是一个 Perl 表达式,其中 s/ 表示替换。 \.html$ 匹配 .html 文件名末尾的扩展名,以及 /.php/ 替换为 .php
  • *.html:这指定该命令应应用于所有具有 .html 扩大。

现在使用 ls 命令来验证文件是否已被重命名。

ls -l *.php

在 Linux 中更改文件扩展名在 Linux 中更改文件扩展名

现在您可以看到上面所有的 html 文件都已重命名为 php。

2. 重命名文件之前预览更改

在执行关键或重大重命名任务时,您可以随时通过运行带有 -n 参数,它将准确地向您展示将发生哪些更改,但这些更改并未真正执行。

下面是该命令的示例:

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

试运行文件重命名试运行文件重命名

注意:上述命令仅显示更改,但实际上更改并未完成,除非您运行不带“-n“ 转变。

3. 查看重命名详细信息

默认情况下,rename 命令不会显示有关其所做的更改的信息。如果您想查看有关重命名的详细信息(类似于使用 -n 选项(用于试运行),使用 -v 选项,它将打印重命名命令所做的所有更改的完整详细信息。

rename -v 's/\.html$/\.php/' *.html

看看到底发生了什么变化看看到底发生了什么变化

4. 在 Linux 中更改文件名大小写

在 Linux 中,您可以轻松更改文件名的大小写,这意味着您可以使用 rename 命令将它们从大写转换为小写(反之亦然)。

在 Linux 中将文件名转换为大写

批量重命名所有小写文件为大写。例如,我想将以下所有文件从小写转换为大写。

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

将文件名转换为大写将文件名转换为大写

在 Linux 中将文件名转换为小写

类似地,您也可以使用以下命令将所有大写字符转换为小写。

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

将文件名更改为小写将文件名更改为小写

5. 文件名首字母大写

要仅将每个文件名的首字母大写,请使用以下命令。

rename 's/\b(\w)/\U$1/g' *.html

文件名首字母大写文件名首字母大写

6. 用下划线替换空格

将所有出现的空白(空格)替换为下划线 (_) 在当前目录内的 HTML 文件的文件名中。

rename 's/\s+/_/g' *.html

上述命令的解释。

  • \s+:匹配一个或多个空格字符。
  • _:用下划线替换空格。
  • g:全局替换,影响每个文件名中的所有匹配。

7.覆盖现有文件

如果您想强制覆盖现有文件,请使用“-f”选项,如下所示。

rename -f 's/a/b/' *.html

如果您想了解有关重命名命令的更多信息,请在终端中输入“man rename”。

man rename

在从命令行处理多个或批量重命名文件时,rename 命令非常有用。尝试一下,然后告诉我它在重命名文件方面有多有用。

资讯来源:由0x资讯编译自TECMINT。版权归作者Ravi Saive所有,未经许可,不得转载

资讯来源:由a0资讯编译自THECOINREPUBLIC。版权归作者A0资讯所有,未经许可,不得转载

上一篇 2024年 5月 31日
下一篇 2024年 5月 31日

相关推荐