- 締切済み
サブディレクトリにあるファイルの拡張子を変更したい
今、サブディレクトリにあるファイルがjpgだったりJPGだったり拡張子がバラバラになっています。 それを、jpgに統一したいのですが、その場合find命令を使って変更することは可能なのでしょうか? もし、分かる方居られましたら教えていただけると助かります。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- cdboxcdboxcdbox
- ベストアンサー率32% (19/59)
回答No.4
bash なら $for i in *.JPG ; do mv $i ${i/JPG/jpg}; done で。
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.3
正規表現はプログラムによって違うことがあるので, 詳細はマニュアルで調べてほしい. #2 に書いたけど, かっこにバックスラッシュが必要かもね.
- 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.
質問者
補足
回答ありがとうございます。 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
補足
括弧にバックスラッスということですが、以下のようにするのでしょうか? find . -name '*.[jJ][pP][gG]' | sed -e 's/^\(\(.*\)\.[jJ][pP][gG])$/mv \1 \2.jpg/' | sh