批量重命名一些文件

批量重命名一些文件

可能的重复:
批量重命名文件

我有一些文件希望在单个命令中重命名。文件是名称因此。我希望从名称中删除 ES Posthumus 位,以及每个文件开头的 01、02 ...等。我该如何删除它?

答案1

可以仅使用bash.请注意,生成的文件名可能会发生冲突例如,如果您有两个具有相同歌名的文件。因此-i开关:

for f in *.mp3; do mv -i "$f" "${f#*Posthumus - }"; done

答案2

rename 's/\d\d\s-\s[ .A-Za-z]+-\s//' *.mp3
01 - E.S. Posthumus - Ashielf Pi.mp3 renamed as Ashielf Pi.mp3
02 - E.S. Posthumus - Oraanu Pi.mp3 renamed as Oraanu Pi.mp3

编辑:如果由于某种原因你没有rename安装可以完成这项工作的版本,你可以轻松地用 Perl 自己编写脚本的最小版本,然后运行它。这是来自Unix常见问题解答,并与我上面提供的正则表达式一起使用:

    #!/usr/bin/perl
    #
    # rename script examples from lwall:
    #       rename 's/\.orig$//' *.orig
    #       rename 'y/A-Z/a-z/ unless /^Make/' *
    #       rename '$_ .= ".bad"' *.f
    #       rename 'print "$_: "; s/foo/bar/ if <stdin> =~ /^y/i' *

    $op = shift;
    for (@ARGV) {
        $was = $_;
        eval $op;
        die $@ if $@;
        rename($was,$_) unless $was eq $_;
    }

相关内容