分享

Ubuntu命令行下给文件批量改名——举例说明 rename 命令的用法

 xmule 2012-07-25

Ubuntu命令行下给文件批量改名——举例说明 rename 命令的用法

最近迷上了有声电子书。拷到手机、或者播放器里面听。可是从网上下载的有声读物通常在文件名上都加上了一些莫名其妙的前缀或者后缀。我的播放器内置软件比较傻,经常因为这些乱七八糟的东西影响播放顺序。

用mv命令弄了半天也没搞定。突发奇想,以前学DOS的时候有个rename命令,支持通配符。估计Linux里面也一定有。

不知道rename这个命令的人就不用自己去 man rename 了。因为基本可以肯定你看不懂。除非你知道什么叫Perl expression

这个命令的用法是这样的:

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]

  • 三个参数的意思是: 

-v (来自verbose) 显示成功改名的文件名
-n (--no-act) 显示将要被改名的文件名。可用于检验表达式是否正确,而不会真正执行命令。
-f  (force) 如果目标文件已经存在则直接覆盖

  • perlexpr 的意思是Perl expression,按照我理解就是Perl语法。您先别头疼...
  • 最后那个files是个过滤条件,对于我来说通常情况下就是用个星号或者 *.mp3 之类的。

好,下面举两个例子。

例子1:

我有这么一堆文件,处于同一个目录下:

JCDS B13 VS 苏菲的世界 01 伊甸园.mp3
JCDS B13 VS 苏菲的世界 02 魔术师的礼帽(上).mp3
JCDS B13 VS 苏菲的世界 03 魔术师的礼帽(下).mp3
JCDS B13 VS 苏菲的世界 04 神话.mp3
JCDS B13 VS 苏菲的世界 05 自然派哲学家(上).mp3
JCDS B13 VS 苏菲的世界 06 自然派哲学家(下).mp3
JCDS B13 VS 苏菲的世界 07 德谟克里特斯.mp3
JCDS B13 VS 苏菲的世界 08 命运.mp3
..............

我的目标是把文件名中的“JCDS B13 VS 苏菲的世界 ” 改成数字 “0”。那么命令应该是:

$ rename -v 's/JCDS B13 VS 苏菲的世界 /0/' *.mp3

或者是 rename -v 's/JCDS B13 VS 苏菲的世界 /0/' *

命令执行完以后文件名就变成了

001 伊甸园.mp3
002 魔术师的礼帽(上).mp3
003 魔术师的礼帽(下).mp3
004 神话.mp3
005 自然派哲学家(上).mp3..............

其中上面命令中的 s是substitute,就是替换。替换的方式是用“0”替换“JCDS B13 VS 苏 菲的世界”。也就是说这个让人摸不着头脑的Perl expression的表达式为:rename -v 's/原字符串/新字符串/' *.mp3。好了,现在您只需要记住上面这个格式就行了。下面再演示个复杂点的。

例子2:

我有一堆文件处于同一个目录下:

读史有学问《刘备不是传说》01-YSXS8.COM.mp3
读史有学问《刘备不是传说》02-YSXS8.COM.mp3
读史有学问《刘备不是传说》03-YSXS8.COM.mp3
读史有

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多