• 締切済み

サブディレクトリにあるファイルの拡張子を変更したい

今、サブディレクトリにあるファイルがjpgだったりJPGだったり拡張子がバラバラになっています。 それを、jpgに統一したいのですが、その場合find命令を使って変更することは可能なのでしょうか? もし、分かる方居られましたら教えていただけると助かります。

みんなの回答

回答No.4

bash なら $for i in *.JPG ; do mv $i ${i/JPG/jpg}; done で。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

正規表現はプログラムによって違うことがあるので, 詳細はマニュアルで調べてほしい. #2 に書いたけど, かっこにバックスラッシュが必要かもね.

kagetora_uesugi
質問者

補足

括弧にバックスラッスということですが、以下のようにするのでしょうか? find . -name '*.[jJ][pP][gG]' | sed -e 's/^\(\(.*\)\.[jJ][pP][gG])$/mv \1 \2.jpg/' | sh

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

ファイル名・ディレクトリ名に「特殊な文字」がなければ find . -name '*.[jJ][pP][gG]' | sed -e 's/^((.*)\.[jJ][pP][gG])$/mv \1 \2.jpg/' | sh あたりでできるかもしれん (かっこにバックスラッシュが必要かも). 「特殊な文字」があるときには, その文字による. 本当に変なことをされると泣きそうなので Perl あたりのプログラム言語を使う. 「renコマンド」って何>#1.

kagetora_uesugi
質問者

補足

回答ありがとうございます。 sed: -e expression #1, char 38: invalid reference \2 on `s' command's RHS というエラーが出ますね、、 renはWindowsのコマンドのようですね、、、

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.1

>それを、jpgに統一したいのですが、その場合find命令を使って変更することは可能なのでしょうか? ターミナルでのファイル名の変更はrenコマンド(renameコマンド)で*を使えば一括で変換できるはずです。 ren *.JPG *.jpg

関連するQ&A