Mac端末 - *.png.pngの名前を*.pngに変更します。

Mac端末 - *.png.pngの名前を*.pngに変更します。

次のように名前を変更したい画像がたくさんあります。

  • *.png.png --> *.png
  • *.jpeg.jpg --> *.jpg
  • *.JPEG --> *.jpg

これまで試してきた唯一のことですが、うまくいかないことを知っていますが、mv *.png.png *.pngとにかく危険を冒しました。

このパターンを使用してファイル名をまとめて変更する簡単な方法はありますか?

答え1

あなたの質問に対する3つのケースのためのシェル専用ソリューションは次のとおりです。

for f in *.png.png ; do mv -i "${f}" "${f%.png}" ; done

for f in *.jpeg.jpg ; do mv -i "${f}" "${f%.jpeg.jpg}.jpg" ; done

for f in *.JPEG ; do mv -i "${f}" "${f%.JPEG}.jpg" ; done

ファイル名を変更するディレクトリに入力します。

代替の postfix スクリプト形式でこれらのソリューションを一般化するには、次のようにします。

#!/bin/sh
from=${1:?} to=${2:?}
for f in *${from} ; do mv -i "${f}" "${f%${from}}${to}" ; done

そして、置き換えるサフィックスと新しいサフィックスという2つのパラメータを使用してスクリプトを呼び出します。

答え2

find名前の変更に使用される内容は次のとおりです*.png.png -> *.png

find ./ -name '*.png.png' -type f \
        -exec sh -c 'mv {} ./$(basename -s .png.png {}).png' \;

実際には普遍的ではないので、他のファイル拡張子に合わせてカスタマイズする必要があります。

答え3

使用rename。複数のファイルを処理するように特別に設計されています。

短いです。クリーナー。

*.png.png --> *.png

% rename 's/.png.png$/.png/' *.png

*.jpeg.jpg --> *.jpg

% rename 's/.jpeg.jpg$/.png/' *.jpeg.jpg

*.JPEG --> *.jpg

% rename 's/.JPEG$/.jpg/' *.JPEG

より包括的なマニュアル:

% man rename

関連情報