一部のファイルのバッチ名を変更する [重複]

一部のファイルのバッチ名を変更する [重複]

重複の可能性:
バッチの名前変更ファイル

単一のコマンドで名前を変更したいファイルがあります。ファイルは名前ですだから。名前からES Posthumusビットと各ファイルの先頭の01、02などを削除したいと思います。どのように削除しますか?

答え1

のみお使いいただけますのでbashご注意ください。生成されたファイル名が競合する可能性があるたとえば、同じ曲のタイトルを持つ2つのファイルがあるとします。したがって、-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

編集する:何らかの理由でそのタスクを実行するバージョンがインストールされていない場合は、renamePerlでスクリプトの最小バージョンを簡単に作成して実行できます。これはから来たものですUnix FAQ、上記で提供された正規表現と共に使用されます。

    #!/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 $_;
    }

関連情報