1

SO に関する他の Q/A を参照して、.bashrc に以下を追加しました。

function findandreplace {
    find . -type f -name "$1" -not -path "*/.git/*" -print0 | xargs -0 sed -i 's/$2/$3/g'
}

奇妙なことに、それは何もしません。それを次のように変更すると:

function findandreplace {
    echo "find . -type f -name \"$1\" -not -path \"*/.git/*\" -print0 | xargs -0 sed -i 's/$2/$3/g'"
}

私は得る

$ findandreplace "*.cpp" "A.cpp" "B.cpp"
find . -type f -name "*.cpp" -not -path "*/.git/*" -print0 | xargs -0 sed -i 's/A.cpp/B.cpp/g'

予想通り。そのコマンドをコピーして貼り付けると、期待される操作が実行されます。

私の初期機能の何が問題になっていますか?

4

2 に答える 2