数字以外のすべてを削除して複数のファイルの名前を変更するには?

数字以外のすべてを削除して複数のファイルの名前を変更するには?

次のようにファイル名を変更したいと思います。

SL Benfica vs. SC Beira-Mar 136.mp4
SL Benfica vs. SC Beira-Mar 137.mp4
SL Benfica vs. SC Beira-Mar 138.mp4
SL Benfica vs. SC Beira-Mar Jogo 074.mp4
SL Benfica vs. SC Beira-Mar Jogo 082.mp4
SL Benfica vs. SC Beira-Mar Jogo 112.mp4

しかし、これは

for f in *.mp4; do echo mv "$f" "${f//[^0-9]/}.mp4"; done

最後に「4」を追加します。

1364.mp4
1374.mp4
1384.mp4
0744.mp4
0824.mp4
1124.mp4

「mp4」の「4」と混同されたようです。この問題をどのように解決できますか?

ベストアンサー1

.mp4置き換える前にサフィックスを削除してください。

for f in *.mp4; do
  fname=${f%.mp4}
  mv -- "$f" "${fname//[^0-9]}.mp4"
done

--ファイル名がaで始まる場合に備えて追加および-削除しましたecho

おすすめ記事