【问题标题】:How to remove an integer pattern from filename using unix command如何使用 unix 命令从文件名中删除整数模式
【发布时间】:2015-11-10 18:05:31
【问题描述】:

我有一堆以曲目号为前缀的 mp3 文件。例如:

01 - MovieName - SongNameA.mp3

02 - MovieName - SongNameB.mp3

我需要从文件名中搜索并删除曲目号和连字符。

我尝试使用 find 和 grep,但找不到要使用 mv 命令重命名的管道查询。

【问题讨论】:

    标签: shell unix rename


    【解决方案1】:

    使用外壳

    for f in [[:digit:]][[:digit:]]' - '*mp3; do mv -i -- "$f" "${f#?????}"; done
    

    或者,同样的东西,但写成多行:

    for f in [[:digit:]][[:digit:]]' - '*mp3
    do
        mv -i -- "$f" "${f#?????}"
    done
    

    glob [[:digit:]][[:digit:]]' - '*mp3 匹配您感兴趣的文件。mv "$f" "${f#?????}" 删除其名称的前五个字符。 mv-i 选项告诉它在覆盖现有文件之前询问。

    使用 Perl 的重命名实用程序

    rename 's/^\d\d - //' *mp3
    

    这会查看所有 .mp3 文件,如果它们的名称以两位数字开头,后跟空格,后跟破折号,再跟空格,则删除这些字符。

    rename 将拒绝覆盖现有文件,除非您提供 -f 选项。

    本节引用 Perl 的 rename 实用程序。请注意,某些 Linux 发行版默认安装了不同且不兼容的 rename 实用程序。有时,perl rename 实用程序在名称 prename 下可用。

    【讨论】:

    • 那么两个名为 01 - MovieName - SongNameA.mp302 - MovieName - SongNameA.mp3 的文件会发生什么?
    • @dfogni 他们现在改名了 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 2010-11-28
    • 1970-01-01
    • 2014-01-06
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多