検索と変数を使用して特定のファイルの文字名を変更しますか?

検索と変数を使用して特定のファイルの文字名を変更しますか?

次のファイルがあります。

/var/www/html/media/2018@03@01@vi_0005_20180301_110203.h264.v0005.th.jpg

このファイルを見つけて、別のフォルダで実行されているbashスクリプトから/var/www/html/mediamp4に名前を変更したいと思います。h264

私の変数は次のとおりです

mediapath="/var/www/html/media"
filemp4=vi_0005_20180301_110203.mp4
fileh264=vi_0005_20180301_110203.h264

変数なしで動作するコマンドを試しましたが、rename使用すると苦情が表示されます。メディアフォルダに表示する方法もわかりません。

rename 's/${fileh264}/${filemp4}/' *${fileh264}*

Global symbol "$mediapath" requires explicit package name (did you forget to declare "my $mediapath"?) at (user-supplied code).
Global symbol "$fileh264" requires explicit package name (did you forget to declare "my $fileh264"?) at (user-supplied code).
Global symbol "$mediapath" requires explicit package name (did you forget to declare "my $mediapath"?) at (user-supplied code).
Global symbol "$filemp4" requires explicit package name (did you forget to declare "my $filemp4"?) at (user-supplied code).

私も使ってみましたが、find何がmv問題なのかわかりませんね。

find ${mediapath} -name "*${fileh264}*" -exec bash -c 'mv $0 ${0/${fileh264}/${filemp4}}' {} \;

どんな助けでも大変感謝します!ありがとうございます。

ベストアンサー1

解決策は二重引用符が必要です。

rename "s/${fileh264}/${filemp4}/" ${mediapath}/*${fileh264}*

おすすめ記事