特定の文字列を含むすべてのファイル名の拡張子を変更します。

特定の文字列を含むすべてのファイル名の拡張子を変更します。

名前に「x264」という文字列を含むファイルを受け取ったら、拡張子を「.mp4」に変更したいと思います(ここでは説明するにはあまりにも詳細な理由が原因です)。例:

Seinfeld_S02E05_x264.mkv ->Seinfeld_S02E05_x264.mp4

Seinfeld_S02E05_x264.avi ->Seinfeld_S02E05_x264.mp4

これらの変更を自動化するには、どのスクリプトを使用できますか?私のコンピュータはFreeBSD 11.1を実行しているNAS4FREEサーバーです。

更新(Jeffの応答後):指定されたディレクトリとすべてのサブディレクトリでも機能したいという事実に言及するのを忘れました。スクリプトの代わりにコマンドを使用しますか?

ベストアンサー1

for f in *x264*.*
do
  mv -- "$f" "${f%.*}".mp4
done

上記のコードは、「glob」モードでシェルループを実行して、一部の拡張子の前に「x264」を含むファイルを見つけます(後で拡張子の名前を変更できるように)mv。名前を変更し、パラメータ拡張を使用して拡張子(ピリオドの後に何も付く*)を削除してから、.mp4拡張子を手動で追加します。

おすすめ記事