如何使用命令行轻松地重命名多个文件?

如何使用命令行轻松地重命名多个文件?

我在 Windows 中快速重命名文件的方法之一是

F2 > Rename > Tab (to next file) > Rename ...

但在 Ubuntu/Nautilus 中,我无法切换到下一个文件。但在 Linux 上,我认为一定有一个命令行替代方案。

但是,有时我可能希望更好地控制如何重命名特定文件。在这种情况下,也许能够切换到下一个文件会更好

答案1

rename一直都在用。它很简单,但希望您了解基本的正则表达式:

rename "s/SEARCH/REPLACE/g"  *

这将在每个文件中替换字符串SEARCHREPLACE(即*)。/g表示全局,因此如果您有SEARCH_SEARCH.jpg,它将被重命名为REPLACE_REPLACE.jpg。 如果您没有/g,它只会进行一次替换,因此现在名为REPLACE_SEARCH.jpg。 如果您想要不区分大小写,请在末尾添加/i(即,/gi或)。/ig

使用正则表达式,您可以做更多的事情。

请注意,这renameprename(又名 Perl rename)命令,支持完整的 Perl 正则表达式。还有一个rename使用模式的命令,功能没有那么强大。Ubuntuprename上默认安装该命令(与 Perl 一起),但现在您可能需要执行以下操作:

sudo apt install rename

这里有一些例子:

字首

添加

rename 's/^/MyPrefix_/' * 
  • document.pdf重命名为MyPrefix_document.pdf

消除

您还可以删除不需要的字符串。假设您有 20 个 MP3 文件,CD RIP 01 Song.mp3并且您想删除“CD RIP”部分,并且您想使用一个命令从所有文件中删除该部分。

rename 's/^CD RIP //' *
  • CD RIP 01 Song.mp301 Song.mp3

注意 中的额外空格'^CD RIP ',如果没有空格,所有文件的第一个字符都会是空格。另请注意,这在没有字符的情况下也可以工作^,但会匹配CD RIP 文件名的任何部分。^保证它只删除位于文件开头的字符。

后缀

添加

rename 's/$/_MySuffix/' *
  • document.pdf重命名为document.pdf_MySuffix

改变

rename 's/\.pdf$/.doc/' *

将变为Something.pdfSomething.doc(使用反斜杠的原因是,.在正则表达式中是通配符,因此.pdf匹配qPDF,而\.pdf仅匹配精确的字符串.pdf。同样需要注意的是,如果您不熟悉 BASH,则必须将反斜杠放在单引号中!您不能省略引号或使用双引号,否则 bash 会尝试翻译它们。要 bash\. "\."等于.。(但使用双引号和反斜杠,例如“\n”表示换行符,但由于"\."不是有效的反向转义序列,因此它会转换为.

实际上,您甚至可以将字符串的各个部分括在引号中,而不是将整个字符串括在引号中:这与 BASH 中的和's/Search/Replace/g'相同。您只需小心特殊字符(和空格)。s/'Search'/'Replace'/gs/Search/Replace/g


-n如果您不确定正则表达式是否正确,我建议使用该选项。它会显示要重命名的内容,然后退出而不执行重命名。例如:

rename -n s/'One'/'Two'/g *

这将列出如果您不在此处放置标记,它将进行的所有更改-n。如果看起来不错,请按Up返回,然后删除 并按-nEnter或将其替换为-v以输出它所做的所有更改)。

笔记:Ubuntu 17.04 以上版本默认不附带rename,但它仍在存储库中。使用sudo apt install rename安装它

答案2

尝试芘尼美拉

它没有与 nautilus 集成,但是它可以完成工作。这里是一篇评论。

图纳尔(XFCE 的一部分)也有一个可以单独运行的重命名器。

Thunar 批量重命名器

答案3

Launchpad 上似乎有一个名为nautilus 重命名器make install下载脚本并解压后,您可以通过运行来安装它。它似乎有一些功能,或者如果您确实了解一些编程知识,那么您可以根据需要对其进行增强,因为它只是一个 Python 脚本。

在此处输入图片描述

答案4

如果你想不使用命令行来执行此操作,类似于你在 Windows 中所做的操作,请使用右箭头键代替Tab 键。这将选择下一个文件,就像 Windows 中的 Tab 键一样。

相关内容