web-dev-qa-db-ja.com

1つのコマンドですべてのファイルプレフィックスを変更するにはどうすればよいですか?

すべてのファイル(すべて同じ.JPEG)の接尾辞を.jpeg(大文字と小文字)に変更する必要があります。
これを行う簡単な方法はありますか?

デフォルトでインストールされるPerlプログラムrenameを使用します。

rename 's/\.JPEG$/.jpeg/' *.JPEG

最初の引数は、.JPEGで終わるファイル名に一致するPerl正規表現であり、.jpegに置き換えます。

2番目の引数は、一致する必要があるファイルを選択します。この場合、現在のディレクトリ内のすべてのファイルは.JPEGで終わります。もちろん、別の場所を指定することもできます。

rename 's/\.JPEG$/.jpeg/' ~/Pictures/*.JPEG

私が見た他の答え:

  • rename s/.JPEG$/.jpeg/ *-ドットが任意の文字と一致するため、StupidJPEGなどのファイルの名前もStupi.jpegに変更されます。 .JPEG$は正規表現です
  • rename 's/\.JPEG$/\.jpeg/' *-動作しますが、現在のディレクトリ内のすべてのファイルをrenameに渡すため、効率が低下します。
  • rename -n 's/.JPEG$/.jpeg/' *.JPEG--nオプションは、実際に名前を変更せずに、名前が変更されるファイルを表示します(「ドライラン」)。 *.JPEG.JPEGで後置されたファイルとのみ一致するため、ここではdot-matches-allの問題は存在しません。
14
Lekensteyn

これは、この特定の使用例に対する最善の解決策ではない可能性がありますが、

for i in *.JPEG; do mv "$i" "$(basename "$i" .JPEG).jpeg"; done

動作します。効率をわずかに高めるために(内部ループでの追加のサブプロセスの呼び出しを回避するために)bashを使用してややこしいことができます。

for i in *.JPEG; do mv "$i" "${i%%.JPEG}.jpeg"; done

このソリューションは、他の何かadditonを実行したい場合(ファイル名を変更する場合、変更された名前をログに記録する場合など)に最も便利です。

3
crazy2be

このためのツールがあります:

Sudo apt-get install renameutilsまたは renameutils をクリックします

(まだインストールされていない場合)

できる場所(コマンドラインから):

rename s/\.JPEG$/\.jpeg/ *.JPEG

3
Rinzwind

投稿後すぐに見つかりました:

rename 's/\.JPEG$/.jpeg/' *

Renameコマンドを使用します。移動とは異なり、多くの場合、画像の名前変更を念頭に置いて作成されているため、混乱の原因となります。

このコマンドのようなものが機能するはずです(.JPEGで終わるすべてのファイルについて、.JPEGを.jpegに変更します)

rename -n 's/.JPEG $ /。jpeg /' * .JPEG

1
tgm4883

parallel で物事を行うことはますます重要になっているので、お勧めします:

parallel mv {} {.}.jpg ::: *.JPG

ただし、このユーティリティはデフォルトではインストールされません。

1
Sebastian

素敵なGUIソリューションを探していて、複雑なコマンドライン引数をいじりたくない場合は、名前を変更できる素晴らしいNautilusスクリプトがありますファイル。シンプルなインターフェイスと多くのオプションがあります。

ここで利用可能: http://gnome-look.org/content/show.php/Renamer?content=87601

0
MarkovCh1