拡張子を変更する関数 chext を示します。
これを使えば簡単に拡張子を変更したファイル名を得られます。
zshでは「$変数名:r:拡張子」と短く記述できますが、
fishでは簡単なシェル関数を定義します。
やや冗長ですが、記憶への負荷が低いです。
関数
~/.config/fish/functions/chext.fish に以下の内容を書きます。
function chext string replace -r '\.[^.]+$' .$argv[2] $argv[1] end
実行例
$ set -x file foo.wav $ echo $file foo.wav $ chext $file mp3 foo.mp3 $ echo $file (chext $file mp3) foo.wav foo.mp3 $ zsh zsh $ echo $file $file:r:mp3 foo.wav foo:mp3
最後までお読みいただき、ありがとうございました。参考になれば嬉しいです。