いくつかのファイルの名前を変更し、他のファイルをディレクトリから除外したいと思います。頑張った
find . -mindepth 1 -maxdepth 1 ! -name 000-default.conf ! -name default-ssl.conf -print0 |
xargs -0 -I {} sudo mv -- {} $(echo {} | sed 's/local.conf/local.example.com.conf/')
しかし、これはうまくいきません。
mv
コマンドの2番目のパラメータが正しく拡張されていないようです。
ベストアンサー1
$(...)
シェルはxargsを呼び出す前にこのセクションを評価します。試してみることができるタスクは次のとおりです。
xargs -0 -I {} bash -c 'mv {} $(echo {} | sed "s/local.conf/local.example.com.conf/")'
sedを避けることができます
xargs -0 -I {} bash -c 'f="{}"; mv "{}" "${f/local.conf/local.example.com.conf}"'
利用可能な場合は、コマンドも参照してくださいrename
。