質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

8443閲覧

Linux 拡張子の名前を変更する

退会済みユーザー

退会済みユーザー

総合スコア0

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

1クリップ

投稿2017/11/08 04:06

Linuxで、あるディレクトリAがあって、その中にファイルがあったりさらにディレクトリがあったりする状況で、そのディレクトリAに存在するファイルのうち拡張子が.jpgであるものを全て.jpegにしたいです。(ディレクトリ名に拡張子.jpgがあってもそれは変更してはいけない)

ディレクトリ名を変えずにファイル名だけ変更する方法が分かりません。for構文とmvコマンドを使って拡張子の名前を変える方法はおそらく分かるのですが、ディレクトリ名を変えずにとなると難しいです。dirnameコマンドを使えばいいのでしょうか...?うまく使えませんが...。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ディレクトリを対象外にするのは、findコマンドで、-type fを使います。
拡張子の変更には、mvでなくrenameコマンドが便利です。

Bash

1find ディレクトリA -type f -name "*.jpg" | xargs rename .jpg .jpeg

と思ったけど、ディレクトリ名にも.jpgがあるようなので、もし、dirA/aaaa.jpg/bbb.jpgというファイル名があったら、dirA/aaaa.jpeg/bbb.jpgにリネームしようとして、失敗しますね。

一階層で良いなら、

Bash

1cd ディレクトリA 2for f in *.jpg 3do if test -f $f 4 then x=$(dirname $f) 5 y=$(basename $f .jpg) 6 mv $f $x/$y.jpeg 7 fi 8done

でしょうか。
二階層目まで含めるなら、forの行を、for f in *.jpg */*.jpgに。三階層目以降も同様。

投稿2017/11/08 05:36

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/11/08 08:47 編集

実際に実行してみても、エラーは出なかったのですが特に変化も起きませんでした。何か留意すべきところなどございましたか...? 訂正します、できました。ありがとうございます。
guest

0

一応、最初は'| sh'を外して出力されるmvコマンドを確認してから実行したほうが良いと思います。

  • 配下のディレクトリ配下も全て再帰的に実行するなら-maxdepth 1は不要です。

bash

1find . -maxdepth 1 -type f -name "*".jpg | perl -pe "s#(.*).jpg#mv \1.jpeg \1.jpeg#" | sh
  • perlじゃなくsedでもいけると思いますが。

bash

1find . -maxdepth 1 -type f -name "*".jpg | sed 's#(.*).jpg#mv & \1.jpeg#' | sh

投稿2017/11/08 04:35

kmatsu777

総合スコア74

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問