- ベストアンサー
ファイルの一括リネーム
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 というように()の中の数字をハイフンを付けて括弧を外したいのですが 一括でうまい具合にやるやり方があったら教えてほしいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ファイル名がバラバラなら、2つ目の方法しか使えませんね。 逆変換はこんな感じです。 % find ./ -name '*.jpg' | sed -r 's/^(.*)-([0-9]+)(\.jpg)$/mv "\0" "\1(\2)\3"/' | sh どちらも最後の「| sh」を取ってテストするといいかもしれません。
その他の回答 (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 こんな感じでしょうか。 適当なので、くれぐれも自己責任で…
質問者
お礼
早速の回答ありがとうございます。 すいません。説明が足りなくて申し訳ないですが ファイル名はaaaだけではなくa0854(1)、a0855(1)みたいに 数字交じりで複数あります。 カッコの中の数字は1~9のみで0はありません。 2つ目のはギリギリ使えました。 それとできたらでいいので逆の -を()にする方も教えてもらえると大変有りがたいです。
お礼
こんなのがスラスラ出てくるなんて尊敬します。 一文字づつ解読しつつ勉強してみます。 ありがとうございました!