一括で名前を変更し、サフィックスを変更しますか?

一括で名前を変更し、サフィックスを変更しますか?

多数のファイルのサフィックスを一括で置き換えるにはどうすればよいですか?

次のようなファイルがたくさんあります

  • NameSomthing-min.png
  • NameSomthing1-min.png
  • NameSomthing2-min.png

すべて変更したいのですが

  • NameSomthing.png
  • NameSomthing1.png
  • NameSomthing2.png

-minつまり、名前から文字を削除します。どうすればいいでしょうか?

答え1

このスクリプトが役に立つかもしれません:

for file in *-min.png; do
    echo mv "$file" "${file%-min.png}.png"
done

実際にコマンドを実行するには、echo を削除します。

答え2

それはシェルによって異なります。私は を使用しzsh、次のように実行します。

for i in *-min.*; do mv $i "${i%-*}.${i#*.}"; done

シェルのマニュアルページをチェックして、「パラメータ拡張」(zshマニュアルページ)。

同様のソリューションはbash、 および他のシェルでも利用できます (どのシェルを使用するかを指定していません)。

特定のソリューションは常にデータと目標によって異なることに注意してください。削除したい名前とサフィックスの間に「-」を区切り文字として使用している場合には、これが適切な方法です。そうでない場合は、パラメータ拡張を少し調整する必要があるかもしれません。

関連情報