• ベストアンサー

ファイルの一括リネーム

aaa(1).jpg、aaa(2).jpg、aaa(3).jpg、aaa(4).jpg…aaa(9).jpg という感じのファイル名を aaa-1.jpg、aaa-2.jpg、aaa-3.jpg、aaa-4.jpg … aaa-9.jpg というように()の中の数字をハイフンを付けて括弧を外したいのですが 一括でうまい具合にやるやり方があったら教えてほしいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • ky072
  • ベストアンサー率60% (85/140)
回答No.2

ファイル名がバラバラなら、2つ目の方法しか使えませんね。 逆変換はこんな感じです。 % find ./ -name '*.jpg' | sed -r 's/^(.*)-([0-9]+)(\.jpg)$/mv "\0" "\1(\2)\3"/' | sh どちらも最後の「| sh」を取ってテストするといいかもしれません。

habutaro
質問者

お礼

こんなのがスラスラ出てくるなんて尊敬します。 一文字づつ解読しつつ勉強してみます。 ありがとうございました!

その他の回答 (1)

  • ky072
  • ベストアンサー率60% (85/140)
回答No.1

数字の範囲が決まっていて、手っ取り早くやるなら、 % seq 1 9 | xargs -iN mv aaa\(N\).jpg aaa-N.jpg 汎用的にやるなら、 % find ./ -name '*.jpg' | sed -r 's/^(.*)\(([0-9]+)\)(\.jpg)$/mv "\0" "\1-\2\3"/' | sh こんな感じでしょうか。 適当なので、くれぐれも自己責任で…

habutaro
質問者

お礼

早速の回答ありがとうございます。 すいません。説明が足りなくて申し訳ないですが ファイル名はaaaだけではなくa0854(1)、a0855(1)みたいに 数字交じりで複数あります。 カッコの中の数字は1~9のみで0はありません。 2つ目のはギリギリ使えました。 それとできたらでいいので逆の -を()にする方も教えてもらえると大変有りがたいです。

関連するQ&A