複数のファイルの名前を変更しますが、数字の部分は維持してください。

複数のファイルの名前を変更しますが、数字の部分は維持してください。

次のファイルがたくさんあります。

pic100.png
pig102.png
box103a.png
superb103b.png
px103c.png
rotor110 - new.png
ready1323 (yellow car).png
motorhome1036x red circle.png
...

したがって、ファイルが3つの部分で構成されていることがわかります。

  • 任意の文字列の接頭辞にすることができます。
  • 「a」、「b」などのサフィックスを含めることができる数値です。
  • オプションのエンディング、常に空白で始まる文字列(「(黄色い車)」、「赤い丸」など)

私に必要なものは次のとおりです。 1回の操作で次のことをしたい。

  • 私が欲しいプレフィックスに変更
  • 数字とサフィックス(a、b、c...)がある場合は保持します。
  • 結末を取り除く

最初の例を使用して次に変換したい場合があります。

object100.png
object102.png
object103a.png
object103b.png
object103c.png
object110.png
object1323.png
object1036x.png

どうすればいいですか?ご覧のとおり、私が保持する唯一のことは、数字と接尾辞「a、b、c」(存在する場合)だけです。

簡単にするために、コマンドは指定されたディレクトリ内のすべてのファイルに対して機能する必要があります。

よろしくお願いします。

答え1

このようなタスクを実行する標準的な方法は、sedを使用して新しいファイル名を生成することです。

ls | while read file; do
     new=$( echo $file | sed 's/[^0-9]*\([^ ]*\)[^.]*\(\..*\)*/object\1\2/' )
     mv "$file" "$new"
done

これを行う前に、コマンドが必要に応じて機能していることを確認してバックアップを作成する必要があります。

関連情報