ファイル拡張子を置き換える方法

ファイル拡張子を置き換える方法

スクリプトファイル拡張子を変更したいと思います。

だから私たちは次のことをしました。

 new_name=` echo run_fix.bash  |  sed 's/[.].*$//' `
 new_file_extension=".in_hold.txt"
 new_name=$new_name$new_file_extension

 echo $new_name
 run_fix.in_hold.txt

しかし、私の考えでは、私の方法はあまりエレガントではないようです。

注 - スクリプト拡張子はbash、perl、またはpythonにすることができ、ターゲット拡張子は「.」その後のどれでも可能です。私たちはグローバル交換をしたい


私はRed Hat 7.2を使用しています。

答え1

old_name=run_fix.bash
new_name=${old_name%.bash}.in_hold.txt

printf 'New name: %s\n' "$new_name"

.bashこれにより、値からファイル名のサフィックスが削除され、結果に$old_name追加されます。.in_hold.txtすべてが変数に割り当てられますnew_name

値から${variable%pattern}パターンに一致する最も短いサフィックス文字列を削除する拡張子は次のとおりです。pattern$variable標準パラメータ拡張

変えるどのファイル名のサフィックス(例:ファイル名の最後のドットの後のすべての項目):

new_name=${old_name%.*}.new_suffix

パターンは.*最後の点とその後のすべての点と一致します(この点は削除されます)。%%代わりに%使うなら最長パターンに一致する部分文字列が削除されます(この場合、それ以降のすべての項目は削除されます)。最初文字列の点)。文字列にドットが含まれていない場合は変更されません。

答え2

renameLarry Wallのコマンドを試してください。すべてのシステムにデフォルトでインストールされるわけではありませんが、一部のシステムにはこの名前の別のコマンドがあります。確かにDebianベースのシステムで動作します。

renamesedファイル名に使用されます。

関連情報