cp和mv在Linux上还有许多用于复制和重命名文件的命令。尝试这些可能会让您大吃一惊并节省时间的命令。几十年来,Linux用户一直在使用简单的cp和mv命令来复制和重命名文件。这些命令是我们大多数人最先学习的命令,每天可能有数百万人使用它们。但是还有其他技术、便捷方法和其他命令可以提供一些独特的选项。首先,让我们考虑一下为什么要复制文件。您可能需要在另一个位置使用相同的文件,或者您可能需要一个副本,因为您将编辑该文件,并且您希望确保手边有一个备份,以备需要恢复原始文件时使用。显而易见的方法是使用cpmyfilemyfile-orig之类的命令。但是,如果要复制大量的文件,那么这个策略可能会变得很陈旧。更好的选择:在开始编辑之前,使用tar创建所有要备份的文件的存档。使用for循环使备份副本更容易。tar的使用方法非常简单。对于当前目录中的所有文件,您可以使用如下命令:$tarcfmyfiles.tar*对于一组可以通过模式识别的文件,您可以使用如下命令:$tarcfmyfiles.tar*。txt在每种情况下,最终都会产生一个myfiles.tar文件,其中包含目录中的所有文件或所有扩展名为.txt的文件。一个简单的循环将允许您使用修改后的名称制作备份副本:$forfilein*>do>cp$file$file-orig>done当您备份单个文件并且该文件恰好有一个名称,您可以依靠制表符完成文件名(在键入足够多的字母以唯一标识文件后按Tab键)并使用类似这样的语法将-orig附加到副本的名称。$cpfile-with-a-very-long-name{,-orig}然后你有一个文件名很长和一个文件名很长。在Linux上重命名文件重命名文件的传统方法是使用mv命令。此命令将文件移动到不同的目录,或就地更改其名称,或两者兼而有之。$mvmyfile/tmp$mvmyfilenotmyfile$mvmyfile/tmp/notmyfile但是我们也有重命名命令来重命名。使用重命名命令的诀窍在于习惯它的语法,但如果您了解一些Perl,您可能会发现它并不难。这是一个非常有用的例子。假设您要通过将所有大写字母替换为小写字母来重命名目录中的文件。通常,您不会在Unix或Linux系统上找到包含大量大写字母的文件,但您可以找到。这里有一个简单的方法来重命名它们,而无需为它们中的每一个使用mv命令。/A-Z/a-z/告诉重命名命令将A-Z范围内的任何字母更改为a-z中的相应字母。$lsAgendaGroup.JPGMyFile$rename'y/A-Z/a-z/'*$lsagendagroup.jpgmyfile您还可以使用重命名来删除文件扩展名。也许您厌倦了看到扩展名为.txt的文本文件。只需使用一个命令即可删除这些扩展。$lsagenda.txtnotes.txtweekly.txt$rename's/.txt//'*$lsagendanotesweekly现在让我们假设您改变了主意,想要将这些扩展名改回来。没问题。只需修改命令即可。诀窍是理解第一个斜杠前的s表示“替代”。前两条斜线之间的内容就是我们要改变的东西,第二条和第三条斜线之间的内容就是改变的东西。因此,$表示文件名的结尾,我们将其更改为.txt。$lsagendanotesweekly$rename's/$/.txt/'*$lsagenda.txtnotes.txtweekly.txt您还可以更改文件名的其他部分。请记住s/oldcontent/newcontent/规则。$lsdraft-minutes-2018-03draft-minutes-2018-04draft-minutes-2018-05$重命名's/draft/approved/'*分钟*$lsapproved-minutes-2018-03approved-minutes-2018-04approved-minutes-2018-05在上面的示例中注意到,当我们在s/old/new/中使用s时,我们将部分名称替换为另一个名称。当我们使用y时,我们正在翻译(将字符从一个范围替换到另一个范围)。总结现在有很多复制和重命名文件的方法。我希望其中一些能让您的命令行生活更愉快。
