• 締切済み

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

今、サブディレクトリにあるファイルが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/8248)
回答No.1

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

関連するQ&A

  • ディレクトリ下のファイルとサブディレクトリを全削除

    バッチファイル作成の際、分からないことがあるのですが。 タイトルの通り、ディレクトリ下のファイルとサブディレクトリを全削除したいのですが、そのディレクトリ自体は残したいのです。 例えば "Temp"以下の全ファイルとサブディレクトリを削除したい場合 del "Temp" /s とするとサブディレクトリは残ってしまい、 rd "Temp" /s とすると"Temp"自体削除されてしまいます。 この場合、一度rdコマンドで削除した上でmdなどで新たにディレクトリを作成してやるしかないのでしょうか?

  • サブディレクトリも含む特定のファイルを削除したい

    UNIX系のコマンドで教えてください カレントディレクトリとそれ以下の階層全てのサブフォルダ内にある*.jpgというファイルを削除するにはどうすればいいでしょうか? よろしくお願いします

  • 古いファイルを含むディレクトリのリネーム

    古いファイルを含むディレクトリのリネーム Linuxサーバのファイル整理の目的で 指定ディレクトリ以下の階層の複数フォルダについて 古い画像ファイル(90日以上変更がない".jpg"ファイル)しかないものは (1)ディレクトリ名をリネーム(ディレクレトリ名末尾に"_deleted"を追加) (2)ディレクトリ内の古いファイルを削除 したいと考えております。 find と xargs をつなげてあげれば、(2)単体であればできるのですが ex.) find . -type f -ctime +90 -print0 | xargs -0 rm 「格納されている全てのファイルが対象となる場合」に「ディレクトリ名をリネームして」 という処理で悩んでおります。 皆様、アドバイスの程お願い致します。 ========================================== 環境: ========================================== OS: CentOS5.4 bashなどを利用して,簡易的に実行できればと考えております。

  • ファイルの拡張子だけを表示したい

    ファイルの拡張子だけを表示したい こんにちは。 Linuxのコマンドについて質問です。 とあるフォルダ配下にあるファイルをfindコマンドを使い検索し、そのフォルダ配下のファイルがどのような拡張子をもっているかを表示するコマンドを考えております。 たとえば、 /home/hoge/abc.xml /home/def.java /ghi.html /jkl.html というディレクトリとファイルがあったとして、ルートディレクトリからfindで検索をかけた場合、 .xml .java .html というように拡張子だけが抜き出されて表示される(重複した拡張子はのぞく)ようなコマンドです。

  • サブディレクトリからファイルやディレクトリを上の階層へ移動する

    D=ディレクトリ(フォルダ) F=ファイル D1 ├ D2 │ └ F1 └ D3   └ D4     ├ F2     └ F3 先ず例えば指定したディレクトリをD1とした場合、 D2、D3、はディレクトリとみなしサブディレクトリは D2、D3、以降に保存されているディレクトリをサブディレクトリとみなします。 この場合D4がサブディレクトリにあたるという事になります。 保存されているファイル、フォルダの階層がこの様な内容だった場合、 サブディレクトリであるD4から、F2、F3を上の階層へ移動させる(D3へ移動させる)ツールを探しています。 D1 ├ D2 │ └ F1 └ D3   ├ F2   ├ F3   └ D4 ↑ちなみに作業終了後はこのような状態になっていれば良い。 尚、その際D4は削除されても構いません。 若干分かり難いかもしれませんが、この様な動作を行ってくれる物を探しています。 ご存知の方、心当たりのある方、回答していただけると幸いです、よろしくお願いします。

  • サブディレクトリも含めて最新のファイルを調べる

    Linux 上のあるディレクトリ配下に存在するすべてのファイルの中で(サブディレクトリ配下も含めて) 更新日時が最新のファイルを抽出したいのですが やり方をご存知であれば教えてください。 ディレクトリが一つだけ or 対象が特定できるなら ls -lrt とかで分かりますが 再帰的にすべてのサブディレクトリを対象としたいのです。 できれば1回のコマンド(ワンライナー)で実行できるとありがたいですが、 それはさすがに大変な気がしますので、 あくまでできればということで。。

  • サブディレクトリからファイルやディレクトリを上の階層へ移動する.2

    D=ディレクトリ(フォルダ) F=ファイル D1 ├ D2 │ └ F1 └ D3   └ D4     ├ F2     └ F3 先ず例えば指定したディレクトリをD1とした場合、 D2、D3、はディレクトリとみなしサブディレクトリは D2、D3、以降に保存されているディレクトリをサブディレクトリとみなします。 この場合D4がサブディレクトリにあたるという事になります。 保存されているファイル、フォルダの階層がこの様な内容だった場合、 サブディレクトリであるD4から、F2、F3を上の階層へ移動させる(D3へ移動させる)方法を探しています。 D1 ├ D2 │ └ F1 └ D3   ├ F2   ├ F3   └ D4 ↑ちなみに作業終了後はこのような状態になっていれば良い。 尚、その際D4は削除されてもされなくとも構いません。 このような階層内容のフォルダが複数あるので 指定したディレクトリに対しこのような動作を自動的に行ってくれると望ましい。 若干分かり難いかもしれませんが、この様な動作や 又、似たような動作を指定したディレクトリに対し行ってくれるツールや方法を探しています。 ご存知の方、心当たりのある方、回答していただけると幸いです、よろしくお願いします。 以前も似たような質問をしたのですが解決に至る回答は得られませんでした。 なので再度質問させてもらいました、何卒よろしくお願い致します。

  • ディレクトリの監視と変更ファイル

    ディレクトリを監視して、ファイルが作成された場合。 その作成されたファイルの名前や拡張子などを知りたいのですが何かよい方法があるでしょうか?今現在ではファイルが作成される前のディレクトリ内のファイルのリストを作っておいてそれと比較してリストにないものが新しいファイル、という風な方法を考えています。他に何かありましたら教えてください。

  • 拡張子を変更すると出る「拡張子を変更すると、ファイルが使えなくなる可能

    拡張子を変更すると出る「拡張子を変更すると、ファイルが使えなくなる可能性があります。変更しますか?」を出さないようにすることは出来ますか? 拡張子の変更をすることがよくあるのでいちいち「はい」を押したくないです。 (※一応断っておきますが間違って拡張子ごとファイル名を変更してしまった、ということではありません。)

  • [バッチファイル]指定ファイルをサブディレクトリを含み検索・処理する

    ■WindowsXP Pro SP3 ■ディレクトリ構造 カレント ├ディレクトリ1  ├サブディレクトリ1-1   ├対象ファイル1-1  ├サブディレクトリ1-2   ├対象ファイル1-2 ├ディレクトリ2  ├サブディレクトリ2-1 ・ ・ ・ このような状態で指定したファイルすべてを見つけ出し、1つ1つ処理を行っていくバッチファイルの書き方を教えて頂きたいです 具体的には、指定する対象ファイルというのがmpeg2ファイルで、そのmpeg2ファイルをすべてFFmpegを用いてmpeg1へ変換しinputと同一ディレクトリに出力するといった動作です 考えた流れはこんな感じなのですがどうにもうまく動作しなくて困っています ディレクトリ1 ディレクトリ1内のサブディレクトリ1-1 サブディレクトリ1-1内の対象ファイル1-1を見つける 見つかったときはFFmpegの処理をする FFmpegが処理し終わったら次の対象ファイルを探す FFmpegの記述は FFmpeg.exe -i "input_file" "output_file" のような感じなのでパスや相対指定を使えば理想通りの動作をすると思うのですが、いま一つ書き方がわかりません