如何在Linux上使用重命名命令

掌握Linux世界的文件重命名功能,并给予 MV-和您自己-休息。 改名 灵活,快速,有时甚至更容易。这是此命令库的教程。

mv有什么问题?

没什么错 MV 。该命令可以很好地完成工作,并且可以在所有Linux发行版,macOS和其他类似Unix的操作系统中找到该命令。因此,它始终可用。但是有时候您只需要推土机,而不是铲子。

MV 命令有生命的目的,那就是移动文件。可以用来移动现有文件是一个令人高兴的副作用 进入 一个具有新名称的新文件。最终结果是重命名文件,因此我们得到了想要的东西。但 MV 不是专用的文件重命名工具。

用mv重命名单个文件

使用 MV 重命名文件类型 MV,一个空格,文件名,一个空格以及您希望文件具有的新名称。然后按Enter。

您可以使用ls 检查文件是否已重命名。

mv oldfile.txt newfile.txt
ls * .txt

用mv重命名多个文件

当您想重命名多个文件时,事情变得更加棘手。 MV 没有能力处理重命名多个文件。您必须使用一些漂亮的Bash技巧。如果您了解一些中级命令行功能,那很好,但是使用以下命令重命名多个文件很复杂 MV 与易用性形成鲜明对比 MV 重命名单个文件。

事情迅速升级。

假设我们有一个目录,其中包含各种类型的文件。其中一些文件的扩展名为“ .prog”。我们要在命令行中重命名它们,以便它们具有“ .prg”扩展名。

我们如何纠缠 MV 为我们做到这一点?让我们看一下文件。

ls * .prog -l

这是一种无需编写实际Bash脚本文件的方法。

为* .prog中的f;做MV-“ $ f”“ $ {f%.prog} .prg”

努力工作吗?让我们检查文件并查看。

ls * .pr *

所以,是的,它起作用了。它们现在都是“ .prg”文件,目录中没有“ .prog”文件。

刚才发生了什么?

那个长命令实际上是做什么的?让我们分解一下。

对于* .prog中的f;做MV-“ $ f”“ $ {f%.prog} .prg”

第一部分开始一个循环,该循环将依次处理目录中的每个“ .prog”文件。

下一部分将说明处理的内容 。它正在使用MV 将每个文件移动到新文件。新文件将使用原始文件名(“ .prog”部分除外)命名。将会使用新的扩展名“ .prg”。

必须有一个更简单的方法

明确地。它是 改名 命令。

改名 它不是标准Linux发行版的一部分,因此您需要安装它。在不同的Linux家族中,它的名称也不同,但是它们的工作方式相同。您只需要根据所使用的Linux版本替换适当的命令名称即可。

在Ubuntu和Debian发行版中安装 改名 像这样:

sudo apt-get install重命名

在Fedora和RedHat派生的发行版中安装 姓氏 像这样。注意最初的“ p”,代表Perl。

sudo dnf安装别名

要将其安装在Manjaro Linux中,请使用以下命令。请注意,重命名命令称为 重命名.

sudo pacman -Syu perl重命名

让我们再做一次

这次我们将使用 改名。我们将回滚时钟,以便获得一组“ .prog”文件。

ls * .prog

现在,使用以下命令将其重命名。然后,我们将与 ls 是否有效。记住要替代 改名 如果您未使用Ubuntu或Debian衍生的Linux,请使用适合您Linux的命令名称。

重命名's / .prog / .prg /'* .prog
ls * .pr *

没问题,它们现在都是“ .prg”文件,目录中没有“ .prog”文件。

这段时间发生了什么?

让我们分三部分来说明这一点魔术。

第一的 部分是命令名称, 改名 (或者 姓氏 或者 重命名 ,用于其他发行版)。

最后的 部分是 *。编,这说明 改名 对所有“ .prog”文件进行操作。

中间 部分定义了我们要对每个文件名执行的工作。这 s 表示替代。第一学期(.prog) 是什么 改名 将在每个文件名和第二个词中搜索(.prg)是它将被替换的内容。

该命令的中间部分(即中央表达式)是Perl的“正则表达式”,它使 改名 发挥其灵活性。

更改文件名的其他部分

到目前为止,我们已经更改了文件扩展名,让我们修改文件名的其他部分。

目录中有很多C源代码文件。所有文件名都以“ slang_”为前缀。我们可以用 ls.

ls sl * .c

我们将用“ sl_”替换所有出现的“ slang_”。该命令的格式已经为我们所熟悉。我们只是在更改搜索词,替换词和文件类型。

重命名's / slang_ / sl_'* .c

这次我们正在寻找“ .c”文件,并寻找“ slang_”。只要在文件名中找到“ slang_”,就会将其替换为“ sl_”。

我们可以通过重复执行以下命令来检查该命令的结果 ls 从上面使用相同参数的命令:

ls sl * .c

删除一部分文件名

我们可以通过不带任何替换的搜索词来删除文件名的一部分。

ls * .c
重命名's / sl _ //'* .c
ls * .c

我们可以从 ls 命令我们的“ .c”文件都以“ sl_”开头。让我们完全摆脱它。

改名 命令遵循与以前相同的格式。我们将寻找“ .c”文件。搜索项是“ sl_”,但没有替代项。两个反斜杠之间没有任何含义,表示空字符串。

改名 将依次处理每个“ .c”文件。它将在文件名中搜索“ sl_”。如果找到它,它将什么也不会替换。换句话说,搜索项被删除。

第二次使用 ls 命令确认已从每个“ .c”文件中删除“ sl_”前缀。

将更改限制在文件名的特定部分

让我们用 ls 查看文件名中包含字符串“ param”的文件。然后,我们将使用 改名 用字符串“ parameter”替换该字符串。我们将使用 ls 再次看到效果 改名 命令已经在那些文件上了。

ls *参数*
重命名's / param / parameter'* .c
ls *参数*

找到四个文件名中带有“ param”的文件。 param.c,param_one.c和param_two.c都在“ 开始 他们的名字。 third_param.c在“ 结尾 的名称,在扩展名之前。

改名 该命令将在文件名中的所有位置搜索“ param”,并在所有情况下均将其替换为“ parameter”。

第二次使用ls 命令向我们表明,这确实是发生了什么。无论“ param”是在文件名的开头还是结尾,都已被“ parameter”代替。

我们可以使用Perl的元字符来完善中间表达式的行为。元字符是代表字符位置或序列的符号。例如, ^ 表示“字符串的开头” $ 表示“字符串结尾”,并且 . 表示任何单个字符(除了换行符)。

我们将使用字符串元字符的开头( ^ )以将搜索范围限制在文件名的开头。

ls * param * .c
重命名's / ^ parameter / value /'* .c
ls * param * .c
ls值* .c

列出了我们之前重命名的文件,我们可以看到字符串“ parameter”在三个文件名的开头,并且在其中一个文件名的结尾。

我们的 改名 命令使用行首(^)搜索字词“参数”之前的元字符。这说明 改名 仅考虑已在文件名开头的搜索词。如果搜索字符串“参数”在文件名中的其他位置,则将被忽略。

与检查 ls,我们可以看到文件名中带有“参数”的文件名 结尾 的文件名尚未修改,但三个文件名中带有“ parameter”的文件名 开始 他们的名字中的搜索字符串已用替换词“值”代替。

的力量 改名 在于Perl的力量。您可以使用Perl的所有功能。

搜索分组

改名 还有更多的技巧。让我们考虑一下您的文件名中包含相似字符串的情况。它们不是完全相同的字符串,因此在这里无法进行简单的搜索和替换。

在此示例中,我们使用 ls 检查我们有哪些以“ str”开头的文件。其中有两个,string.c和strangle.c。我们可以使用称为分组的技术一次重命名两个字符串。

这个的核心表达 改名 命令将在文件名中搜索具有字符序列“ stri”的字符串 或者 “ stra”,其中这些序列后面紧跟着“ ng”。换句话说,我们的搜索字词将查找“字符串” “强壮”。替代术语是“爆炸”。

ls str * .c
重命名's /(stri | stra)ng / bang /'* .c
ls ban * .c

使用ls 第二次确认string.c已经变成bang.c而strangle.c现在是bangle.c。

使用带重命名的翻译

改名 该命令可以对称为翻译的文件名执行操作。转换的一个简单示例是将一组文件名强制转换为大写。

在里面 改名 下面的命令请注意,我们没有使用 s / 要开始集中表达,我们正在使用 y /。这说明改名 我们没有进行替代;我们正在翻译。

- term是Perl表达式,表示从a到z序列中的所有小写字符。同样, A-Z term表示从A到Z的序列中的所有大写字母。

该命令的中心表达式可以解释为“如果在文件名中找到了从a到z的任何小写字母,请用从A到Z的大写字符序列中的相应字符替换它们。

要强制所有“ .prg”文件的文件名都使用大写,请使用以下命令:

重命名“ y / a-z / A-Z /” * .prg

ls * .PRG

ls 命令显示所有“ .prg”文件名现在都是大写。实际上,严格来说,它们不再是“ .prg”文件。它们是“ .PRG”文件。 Linux区分大小写。

我们可以通过反转命令的位置来反转最后一条命令 -A-Z 中央表达式中的术语。

重命名“ y / A-Z / a-z /” * .PRG

ls * .prg

您(Wo | Do)不到五分钟就学会了Perl

熟悉Perl是花费大量时间的时间。但是要开始使用省时功能 改名 命令,您根本不需要太多Perl知识就可以在功能,简单性和时间上获得巨大的好处。


$config[zx-auto] not found$config[zx-overlay] not found