• ベストアンサー

Mac OS Xターミナルでワイルドカード名前変更

こんばんは 次のような名前変更をしたいのですがやりかたがわかりません。 1_1234.jpg 2_1235.jpg 3_12356.jp これを冒頭の連番を削除したいのです。 Flickrにバックアップとして写真をアップロードしていました。先日ハードディスクがいかれてしまったので、オンラインからまるごとダウンロードしてきました。ツールを使ったのですが、変な連番がついてしまって困っています。 ワイルドカードを使うにしても2カ所になるし、[0-9]*とか、[0-9]{1,3}とか書いてみましたがだめでした。 お願いします。 OS X Mavericks

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

  • ベストアンサー
回答No.4

Perl のリポジトリを見てみましたが、 確かに rename は含まれていませんでした。 GPL なので、貼っておきます。 http://pastebin.com/qRX5eYFf /usr/local/bin/rename などに保存して、 chmod +x /usr/local/bin/rename すれば、使えると思います。

tuktukrace
質問者

お礼

ありがとうございます。 テキストファイルにコピペして、usr/bin/に配置しました。 (usr/local/bin/はありませんでした) chmod したところ使えるようになり、先の回答者からいただいた正規表現で無事に名前変更できました。 perlはまったく未知の領域なので、この分野に足を踏み入れるのはまだまだ先のことだと思いますが、勉強になりました。

その他の回答 (3)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

renameというコマンドはLinuxのもののようですね。 Perlには含まれていません。 MacOSXにも含まれていません。 Perl のスクリプトのようなので、どこかで見付けてきたら使えるかもしれませんが。

回答No.2

Perl をインストールしていれば、rename というコマンドが含まれているはずです。 この rename をつかうと、 rename 's/\A\d+_//' *.jpg とできます。

tuktukrace
質問者

お礼

ありがとうございます。 このコマンドで無事に名前が変更できました。 '/ で始まるPerl正規表現は必要に迫られて何度かコピペしたことがありますが、まったく理解していません・・・ いつか使いこなせる日が来るといいのですが。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

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のスクリプトを間違えないように)

tuktukrace
質問者

お礼

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

関連するQ&A