スクリプトファイル拡張子を変更したいと思います。
だから私たちは次のことをしました。
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
rename
Larry Wallのコマンドを試してください。すべてのシステムにデフォルトでインストールされるわけではありませんが、一部のシステムにはこの名前の別のコマンドがあります。確かにDebianベースのシステムで動作します。
rename
sed
ファイル名に使用されます。