抓住Linux世界的文件重命名引擎,让mv和你自己休息一下。重命名是灵活的,快速的,有时甚至更容易。下面是一个关于这个强大的命令的教程。
mv没什么问题。这个命令做得很好,在所有Linux发行版、macOS和其他类似Unix的操作系统中都可以找到它。所以它总是可用的。但有时你只需要推土机,而不是铲子。
mv命令在生活中有一个目的,那就是移动文件。这是一个令人高兴的副作用,它可以用来移动一个现有的文件到一个新的文件,一个新的名称。最终的效果是重命名文件,这样我们就得到了想要的。但是mv不是一个专门的文件重命名工具。
要使用mv重命名文件,请键入mv、空格、文件名、空格以及希望文件具有的新名称。然后按Enter。
可以使用ls检查文件是否已重命名。
mv oldfile.txt newfile.txt ls *.txt当您要重命名多个文件时,事情会变得更加棘手。mv无法处理多个文件的重命名。你必须使用一些漂亮的花招。如果您知道一些中级命令行fu,这很好,但是使用mv重命名多个文件的复杂性与使用mv重命名单个文件的简单性形成鲜明对比。
事态迅速升级。
假设我们有一个目录,里面有各种不同类型的文件。其中一些文件的扩展名为“.prog”。我们要在命令行中重命名它们,以便它们具有“.prg”扩展名。
我们如何说服mv为我们做这件事?我们来看看档案。
ls *.prog -l这里有一种方法不需要编写实际的Bash脚本文件。
for f in *.prog; do mv -- "$f" "${f%.prog}.prg"那有用吗?让我们查一下档案看看。
ls *.pr*所以,是的,成功了。它们现在都是“.prg”文件,目录中没有“.prog”文件。
那个长长的命令到底做了什么?我们把它分解一下。
for f in *.prog; do mv -- "$f" "${f%.prog}.prg"第一部分启动一个循环,依次处理目录中的每个“.prog”文件。
下一部分说明处理将做什么。它使用mv将每个文件移动到一个新文件。新文件将以原始文件名命名,不包括“.prog”部分。将使用“.prg”的新扩展名。
非常肯定。这是重命名命令。
rename不是标准Linux发行版的一部分,因此需要安装它。它在不同的Linux家族中也有不同的名称,但它们的工作方式都是一样的。您只需根据所使用的Linux风格替换相应的命令名。
在Ubuntu和Debian衍生发行版中,您可以这样安装重命名:
sudo apt-get install rename在Fedora和RedHat派生的发行版中,您可以这样安装prename。注意首字母“p”,它代表Perl。
sudo dnf install prename要在ManjaroLinux中安装它,请使用以下命令。请注意,重命名命令称为perl rename。
sudo pacman -Syu perl-rename这次我们将使用重命名。我们将把时钟向后拨,这样就有了一组“.prog”文件。
ls *.prog现在让我们使用下面的命令来重命名它们。然后我们会和ls确认是否有效。如果您不使用Ubuntu或Debian派生的Linux,请记住用适当的命令名替换rename。
rename 's/.prog/.prg/' *.prog ls *.pr*这样,它们现在都是“.prg”文件,目录中没有“.prog”文件了。
让我们从三个部分来解释这一点。
第一部分是命令名rename(对于其他发行版,则为prename或perl rename)。
最后一部分是*.prog,它告诉rename对所有的.prog文件进行操作。
中间部分定义了我们希望对每个文件名所做的工作。s代表替代品。第一个术语(.prog)是rename将在每个文件名中搜索的内容,第二个术语(.prg)将被替换。
命令的中间部分,即中心表达式,是一个Perl“正则表达式”,它使rename命令具有了灵活性。
到目前为止,我们已经更改了文件扩展名,让我们修改文件名的其他部分。
目录中有很多C源代码文件。所有文件名的前缀都是“俚语”。我们可以和ls核实一下。
ls sl*.c我们将把所有出现的“俚语”替换为“sl”。命令的格式我们已经很熟悉了。我们只是在更改搜索项、替换项和文件类型。
rename 's/slang_/sl_' *.c这次我们要查找“.c”文件,并搜索“slang”。每当在文件名中找到“slang\时,就会用“sl\替换”。
我们可以通过使用相同的参数重复上面的ls命令来检查该命令的结果:
ls sl*.c我们可以删除文件名的一部分,方法是不使用任何内容替换搜索词。
ls *.c rename 's/sl_//' *.c ls *.c我们可以从ls命令中看到,.c文件的前面都加上了“sl”。让我们把它全部处理掉。
rename命令的格式与前面的相同。我们要找“.c”文件。搜索词是“sl戡”,但没有替换词。两个反斜杠之间没有任何内容意味着什么,一个空字符串。
rename将依次处理每个“.c”文件。它将在文件名中搜索“sl”。如果找到了,就什么都没有了。换句话说,搜索词被删除。
第二次使用ls命令时,会确认已从每个“.c”文件中删除了“slè”前缀。
让我们使用ls来查看文件名中包含字符串“param”的文件。然后我们将使用rename将该字符串替换为字符串“parameter”。我们将再次使用ls来查看rename命令对这些文件的影响。
ls *param* rename 's/param/parameter' *.c ls *param*找到四个文件名中有“param”。param.c、param_one.c和param_two.c的名字开头都有“param”。第三个param.c在其名称的末尾有“param”,就在扩展名之前。
rename命令将在文件名的任何地方搜索“param”,并在所有情况下将其替换为“parameter”。
ls命令的第二次使用向我们表明,这正是所发生的事情。无论“param”位于文件名的开头还是结尾,它都已被“parameter”替换
我们可以使用Perl的元字符来细化中间表达式的行为。元字符是表示字符位置或序列的符号。例如,^表示“字符串的开始,$表示“字符串的结束”,以及。表示任何单个字符(换行符除外)。
我们将使用字符串元字符的开头(^)将搜索限制在文件名的开头。
ls *param*.c rename 's/^parameter/value/' *.c ls *param*.c ls value*.c我们前面重命名的文件被列出,我们可以看到字符串“parameter”位于三个文件名的开头,它位于其中一个文件名的末尾。
我们的rename命令在搜索词“parameter”之前使用了行首(^)元字符。这告诉rename,如果搜索词位于文件名的开头,则只考虑找到它。如果搜索字符串“parameter”在文件名中的任何其他位置,它将被忽略。
通过ls检查,我们可以看到文件名末尾有“parameter”的文件名没有被修改,但是名称开头有“parameter”的三个文件名的搜索字符串被替换项“value”替换
重命名的威力在于Perl的威力。Perl的所有功能都可以由您使用。
rename还有更多的秘密。让我们考虑一下这样一种情况:文件名中可能有类似字符串的文件。它们不是完全相同的字符串,因此简单的搜索和替换在这里不起作用。
在本例中,我们使用ls检查哪些文件以“str”开头。其中有两个,string.c和strangle.c。我们可以使用称为分组的技术同时重命名这两个字符串。
此rename命令的中心表达式将搜索文件名中具有字符序列“stri”或“stra”的字符串,其中这些序列后面紧跟着“ng”。换句话说,我们的搜索词将查找“string”和“strang”。替代术语是“bang”。
ls str*.c rename 's/(stri|stra)ng/bang/' *.c ls ban*.c第二次使用ls可以确认string.c已经变成bang.c,而string.c现在变成bangle.c。
rename命令可以对名为translati***的文件名执行操作。翻译的一个简单示例是强制将一组文件名转换为大写。
请注意,在下面的rename命令中,我们不是使用s/来启动中心表达式,而是使用y/。这说明我们不是在执行替换,而是在执行翻译。
a-z是一个Perl表达式,表示从a到z的序列中的所有小写字符。类似地,a-z表示从a到z的序列中的所有大写字母。
此命令中的中心表达式可以解释为“如果在文件名中找到从a到z的任何小写字母,请用从a到z的大写字符序列中的相应字符替换它们。”
要强制所有“.prg”文件的文件名为大写,请使用以下命令:
重命名为“y/a-z/a-z/”*.prg
ls *.PRGls命令告诉我们所有的“.prg”文件名现在都是大写的。事实上,严格来说,它们不再是“.prg”文件。它们是“.PRG”文件。Linux区分大小写。
我们可以通过反转a-z和a-z项在中心表达式中的位置来反转最后一个命令。
重命名为“y/A-Z/A-Z/”*.PRG
ls *.prg掌握Perl是一种很好的方法。但是,要开始使用rename命令的省时功能,您根本不需要太多的Perl知识就可以在功能、简单性和时间方面获得巨大的好处。
...这可能是因为这个名字,听起来像是只有铁杆IT极客才会使用的东西。或者是因为PowerShell的好处还不清楚。可能是因为最初的学习曲线。 ...
... 在本文中,我将向您展示如何在Linux上安装、运行和使用PowerShell! ...
...许您在Android设备上安装诚实善良的Linux应用程序。下面是如何使用Termux应用程序。 ...
... 如何在windows10上安装linux bash shell ...
要在Linux中重命名文件吗?如果您知道如何在Windows、macOS或Chrome操作系统中完成这项工作,那么您就知道如何在这里完成这项工作。在大多数版本的Linux上,您只需右键单击一个文件并选择Rename选项。 ...
想在Linux系统上添加用户但不知道如何添加?在Linux上使用命令行界面管理用户无疑是一项复杂的工作。而对于初学者来说,即使添加新用户也是一场噩梦。 ...
...已配置的系统,与其他计算机共享,或者只保存备份。 如何工作 导入和导出功能是在2019年5月的Windows10版本1903更新中添加的。如果尚未安装,则无法使用这些命令行选项。 您只需要为Windows wsl命令提供两个新选项:--export和--i...
...ws用户,ZIP格式将是最简单、最兼容的解决方案。 相关:如何从文件中提取文件。焦油.gz或者。焦油bz2Linux上的文件 zip、unzip和其他实用程序 您可能已经知道,Linux和类似Unix的操作系统(如macOS)具有允许您创建ZIP文件并从中提...