接尾辞「.foo」が付いた特定のディレクトリ内のすべてのファイルを、同じベース名を含むが接尾辞が「.bar」に変更されたファイルに変換しようとしています。シェルスクリプトとforループでこれを行うことはできますが、同じ目標を達成するワンライナーを作成したいと思います。
目的:
入力:*。foo
出力:*。bar
これは私が試したことです:
find . -name "*.foo" | xargs -I {} mv {} `basename {} ".foo"`.bar
これは近いですが正しくありません。結果:
入力:*。foo
出力:*。foo.bar
指定されたサフィックスがベース名で認識されない理由について何か考えはありますか?「.foo」を囲む引用符は不要であり、省略しても結果は同じです。