如何在Linux中一次重命名多个文件
我相信我们已经知道如何使用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之前的任何角色都会匹配。
**表示查看当前目录及其子目录。