如何在Linux中一次重命名多个文件

时间:2020-03-05 15:29:17  来源:igfitidea点击:

我相信我们已经知道如何使用MV命令重命名Linux中的文件。

我们只需格式使用它:

mv old_file_name new_file_name

这种方法没有任何问题。
这是标准的方式。

但是你必须重命名几个文件的情况呢。
一个接一个地使用MV命令将花费充足的时间,并且肯定应该避免。

我们可以使用MV命令使用Mind Exec命令选项来自动执行此过程。
但是,让我告诉你一个简单的基于正则表达式模式重命名文件的方式。

重命名Linux中的命令

有一个名为重命名的命令行实用程序,允许我们重命名与Perl Regex表单中某个模式匹配的所有文件。

重命名命令仅在文件名上工作,而不是文件本身。

这是symtax重命名命令以下:

rename [options] perlexpr [files]

此"重命名命令"具有以下选项:

  • -v:详细模式。
  • -N:没有任何行动。显示将重命名的文件,但不会重命名文件。
  • -o:没有覆盖。不要覆盖现有文件。
  • -f:力量。覆盖现有文件。
  • -s:不要重命名符号链接,但它的目标

请注意,重命名命令不是标准实用程序,这些实用程序在MV或者CP命令等Linux发行版上预先安装。

我们可能必须安装它。
如果我们是Ubuntu或者Debian中的sudo用户,则可以使用此命令安装重命名:

sudo apt install rename

现在,我们必须想知道如何使用重命名命令重命名文件。
让我展示两个实际场景,这个命令将为我们节省大量时间。

场景1:在Linux中的所有文件名中替换另一个字符

想象一下,如果你有几个文件名中有白色空间。
这是一个噩梦,可以在Linux中处理文件名中的空间。
这就是为什么没有经验丰富的用户其中命名具有空格的文件。

当然,我们希望删除空格并用下划线(_)替换它们。
重命名命令在这里非常方便。
让我们看看如何。

要在当前目录中所有文件的名称中替换具有下划线的空格,我们所要做的就是以这种方式使用enram命令:

rename 's//_/g' *

如果我们甚至远程熟悉Regex,则会了解S//_/G正在搜索空间并用_替换所有空间的所有出现。

有趣的部分是星号(*)。
星号告诉我们重命名当前目录中的匹配文件。

但是,如果我们想要在子目录中重命名所有匹配文件,那么怎么样?
在这种情况下,我们可以使用这样的两个星号:

rename 's//_/g' **

场景2:在Linux中一次更改多个文件的扩展

这是另一种情景。
我们有几个包含my_file.xyz等名称的文件,我们希望重命名这些文件,以便它们成为my_file.abc等内容。

要立即更改多个文件的扩展,可以按以下方式使用重命名命令:

rename 's/\.xyz$/.abc/' **

让我向你解释上面的命令。

‘s/.xyz$/.abc/’:这是一个正则表达式,意味着用.abc替换线条末尾的.xyz字符。
另外的\用于逃避。
否则它意味着XYZ之前的任何角色都会匹配。

**表示查看当前目录及其子目录。