重複の可能性あり:
コマンドラインまたはサードパーティのツールを使用して、ファイルの名前を一括変更するにはどうすればよいですか?
マルチメディア プロジェクトに使用されている 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
もちろん、スクリプトまたはシェル コマンドを変更して、特定のパターンに適合するファイルのみの名前を変更したり、異なる量だけ増分したりすることもできます。