番号付きファイルのグループの名前を変更する必要がありますが、番号 + 5 を変更します。どうすればよいでしょうか?

番号付きファイルのグループの名前を変更する必要がありますが、番号 + 5 を変更します。どうすればよいでしょうか?

重複の可能性あり:
コマンドラインまたはサードパーティのツールを使用して、ファイルの名前を一括変更するにはどうすればよいですか?

マルチメディア プロジェクトに使用されている 01.mp3 - 47.mp3 という名前の 47 個の .mp3 ファイルのグループがあります。各ファイルの名前は実際にはその番号 + 5 である必要があり、02.mp3 は実際には 07.mp3 である必要があります。名前を変更したファイルには、何らかのプレフィックス + 番号を付けるか、既存のファイルと干渉しないように新しいフォルダーに書き込むことができます。

私には Ubuntu と Windows が使えるのですが、これに対するアプローチを提案してくれる人はいますか?

答え1

次のようなスクリプトを使用して、awk でこれを実行できます。

#!/usr/bin/awk -f
BEGIN {
    regex = "[0-9]+"
    print "mkdir new"
}
{
    if (match($8,regex)) {
        before = substr($8,1,RSTART-1);
        pattern = substr($8,RSTART,RLENGTH);
        newnumber = pattern + 5
        after = substr($8,RSTART+RLENGTH);
        printf("mv %s new/%s%.2d%s\n", $8, before, newnumber, after);
    }
}

次のファイルを含むフォルダーがあると仮定します。

foo01
foo02
foo03
foo04
foo05
bar10.txt
bar11.txt
bar12.txt
bar13.txt
rename.awk

コマンドを実行すると、ls -l|./rename.awk|sh次のようになります。

new/foo06
new/foo07
new/foo08
new/foo09
new/foo10
new/bar15.txt
new/bar16.txt
new/bar17.txt
new/bar18.txt
rename.awk

もちろん、スクリプトまたはシェル コマンドを変更して、特定のパターンに適合するファイルのみの名前を変更したり、異なる量だけ増分したりすることもできます。

関連情報