在 Linux 上如何复制和重命名文件
重命名文件的传统方法是使用 mv 命令。该命令将文件移动到不同的目录,或原地更改其名称,或者同时执行这两个操作。
$ mv myfile /tmp
$ mv myfile notmyfile
$ mv myfile /tmp/notmyfile
但我们也有 rename 命令来做重命名。使用 rename 命令的窍门是习惯它的语法,但是如果你了解一些 Perl,你可能发现它并不棘手。
有个非常有用的例子。假设你想重新命名一个目录中的文件,将所有的大写字母替换为小写字母。一般来说,你在 Unix 或 Linux 系统上找不到大量大写字母的文件,但你可以有。这里有一个简单的方法来重命名它们,而不必为它们中的每一个使用 mv 命令。 /A-Z/a-z/ 告诉 rename 命令将范围 A-Z 中的任何字母更改为 a-z 中的相应字母。
$ ls
Agenda Group.JPG MyFile
$ rename 'y/A-Z/a-z/' *
$ ls
agenda group.jpg myfile
你也可以使用 rename 来删除文件扩展名。也许你厌倦了看到带有 .txt 扩展名的文本文件。简单删除这些扩展名 —— 用一个命令。
$ ls
agenda.txt notes.txt weekly.txt
$ rename 's/.txt//' *
$ ls
agenda notes weekly
现在让我们想象一下,你改变了心意,并希望把这些扩展名改回来。没问题。只需修改命令。窍门是理解第一个斜杠前的 s 意味着“替代”。前两个斜线之间的内容是我们想要改变的东西,第二个斜线和第三个斜线之间是改变后的东西。所以,$ 表示文件名的结尾,我们将它改为 .txt。
$ ls
agenda notes weekly
$ rename 's/$/.txt/' *
$ ls
agenda.txt notes.txt weekly.txt
你也可以更改文件名的其他部分。牢记 s/旧内容/新内容/ 规则。
$ ls
draft-minutes-2018-03 draft-minutes-2018-04 draft-minutes-2018-05
$ rename 's/draft/approved/' *minutes*
$ ls
approved-minutes-2018-03 approved-minutes-2018-04 approved-minutes-2018-05
在上面的例子中注意到,当我们在 s/old/new/ 中使用 s 时,我们用另一个名称替换名称的一部分。当我们使用 y 时,我们就是直译(将字符从一个范围替换为另一个范围)。
总结
现在有很多复制和重命名文件的方法。我希望其中的一些会让你在使用命令行时更愉快。
- 点赞
- 收藏
- 关注作者
评论(0)