プロが教えるわが家の防犯対策術!

こんばんは

次のような名前変更をしたいのですがやりかたがわかりません。
1_1234.jpg
2_1235.jpg
3_12356.jp

これを冒頭の連番を削除したいのです。

Flickrにバックアップとして写真をアップロードしていました。先日ハードディスクがいかれてしまったので、オンラインからまるごとダウンロードしてきました。ツールを使ったのですが、変な連番がついてしまって困っています。
ワイルドカードを使うにしても2カ所になるし、[0-9]*とか、[0-9]{1,3}とか書いてみましたがだめでした。

お願いします。
OS X Mavericks

A 回答 (4件)

Perl のリポジトリを見てみましたが、


確かに rename は含まれていませんでした。
GPL なので、貼っておきます。
http://pastebin.com/qRX5eYFf
/usr/local/bin/rename などに保存して、
chmod +x /usr/local/bin/rename
すれば、使えると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

テキストファイルにコピペして、usr/bin/に配置しました。
(usr/local/bin/はありませんでした)
chmod したところ使えるようになり、先の回答者からいただいた正規表現で無事に名前変更できました。

perlはまったく未知の領域なので、この分野に足を踏み入れるのはまだまだ先のことだと思いますが、勉強になりました。

お礼日時:2014/07/24 20:16

renameというコマンドはLinuxのもののようですね。


Perlには含まれていません。
MacOSXにも含まれていません。

Perl のスクリプトのようなので、どこかで見付けてきたら使えるかもしれませんが。
    • good
    • 0

Perl をインストールしていれば、rename というコマンドが含まれているはずです。


この rename をつかうと、
rename 's/\A\d+_//' *.jpg
とできます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
このコマンドで無事に名前が変更できました。

'/ で始まるPerl正規表現は必要に迫られて何度かコピペしたことがありますが、まったく理解していません・・・
いつか使いこなせる日が来るといいのですが。

お礼日時:2014/07/24 20:17

Unix系OSで使われているコマンドラインシェルには、Windowsで言うところの「ワイルドカード」は使えません。


* 等は、シェルでファイル名に展開されたあと、各コマンドに渡されます。
例えば
mv *.jpg *.png
とすると、シェルで *.jpgに該当するファイル名、*.pngに該当するファイル名に展開され
mv 1.jpg 2.jpg 3.jpg 10.png 11.png
等というコマンドラインになり、mv は上記のコマンドラインで実行されます。
mvは元に「ワイルドカード」があったなどとはまったく知りません。


1回だけなら

\ls -1 *.jpg | sed 's/.*/mv & &/' > move.sh
等として、
mv 1_1234.jpg 1_1234.jpg
mv 2_1235.jpg 2_1235.jpg
...
というテキストファイルmove.sh を作る
→ move.sh を編集して、mvコマンドをやりたいファイル名変更になるようにする
→ sh move.sh で上記mvコマンドをまとめて実行

という方法があります。
sedコマンド(と正規表現)に慣れているなら
\ls -1 *.jpg | sed 'mv 元ファイル 新ファイル になるようなsedスクリプト' | sh
で上記作業をまとめてできます(sedのスクリプトを間違えないように)
    • good
    • 0
この回答へのお礼

ありがとうございます。
Windowsであればその手のスクリプトをさっと書いて置き換えたりしたんでしょうが、あいにくMacのコマンド類になじみがあまりないので今回は言われるがままほかの回答者のくださった正規表現をコピペして乗り切りました。

お礼日時:2014/07/24 20:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!