在 Linux 命令行中一次重命名多个文件
Linux 中的重命名命令可用于一次重命名多个文件。以下是一些可以使用重命名命令的实际场景。ufeff
我相信你已经知道如何在 Linux 中使用 mv 命令重命名文件了。您只需按以下格式使用它:
mv old_file_name new_file_name
相同的 mv 命令也用于重命名目录。这个方法没有什么问题。毕竟这是标准方式。
但是如果您必须重命名多个文件,该怎么办?一条一条地使用 mv 命令会花费大量时间,当然应该避免。
您可以使用 find exec 命令选项和 mv 命令来自动执行此过程。
但让我告诉您一种基于正则表达式模式重命名文件的更简单的方法。
Linux 中的重命名命令
有一个名为 rename 的命令行实用程序,它允许您重命名与 Perl 正则表达式形式的特定模式匹配的所有文件。重命名命令仅适用于文件名,不适用于文件本身。
重命名命令的语法如下:
rename [options] perlexpr [files]
此“重命名命令”具有以下选项:
-v:详细模式。
-n:不采取任何行动。显示要重命名的文件,但不重命名文件。
-o:不覆盖。不要覆盖现有文件。
-f:强制。覆盖现有文件。
-s :不重命名符号链接,而是重命名其目标
请注意,rename 命令不是像 mv 或 cp 命令那样预装在 Linux 发行版上的标准实用程序。您可能需要安装它。如果您是 Ubuntu 或 Debian 中的 sudo 用户,可以使用以下命令安装 rename:
sudo apt install rename
现在您一定想知道如何使用 rename 命令重命名文件。让我展示两个实际场景,其中该命令将为您节省大量时间。
场景1:将Linux中所有文件名中的一个字符替换为另一个字符
想象一下,如果多个文件名中有空格。在 Linux 中处理文件名中的空格是一场噩梦。这就是为什么没有经验丰富的用户会命名带有空格的文件。
当然,您需要删除空格并用下划线 (_) 替换它们。重命名命令在这里会非常方便。让我们看看如何。
要将当前目录下所有文件名中的空格替换为下划线,只需使用 renam 命令即可:
rename 's/ /_/g' *
如果您对正则表达式非常熟悉,您就会明白 s/ /_/g 正在搜索空格并将所有出现的空格替换为 _。
有趣的部分是星号(*)。星号告诉您重命名当前目录中的匹配文件。
但是,如果您还想重命名子目录中的所有匹配文件怎么办?在这种情况下,您可以使用两个星号,如下所示:
rename 's/ /_/g' **
场景 2:在 Linux 中一次更改多个文件的扩展名
这是为您准备的另一种情况。您有多个名称类似于 my_file.xyz 的文件,并且您想要重命名这些文件,以便它们成为类似于 my_file.abc 的文件。
要一次更改多个文件的扩展名,可以按以下方式使用重命名命令:
rename 's/\.xyz$/.abc/' **
让我向您解释一下上面的命令。
‘s/\.xyz$/.abc/’ :这是一个正则表达式,意味着用 .abc 替换行尾的 .xyz 字符。附加的\用于转义 .否则,将匹配 xyz 之前的任何字符。
** 表示查看当前目录及其子目录。
您喜欢重命名命令吗?
没有多少人知道重命名命令。这也可能是因为 rename 在许多 Linux 系统上并不是事实上的命令。
然而,我发现这个命令在同时处理多个文件的重命名时非常方便。
你呢?您过去使用过重命名命令吗?您更喜欢如何一次重命名多个文件?