Обратится к другому Q не делать/Как на SO, я добавил следующее к моему .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'
, как ожидалось. Затем копирование этой команды выполняет ожидаемую операцию.
Что случилось с моей начальной функцией?
Есть ли возможность не исключать один знак из расширенного SED команды (например, '/' в этом примере)? – EverythingRightPlace
Но плохое поведение можно смягчить, избегая этих косых черт? – brandones
@brandones: Да. Я обновил свой ответ, чтобы добавить версию, которая это делает. Тем не менее, это выглядит смешно. :-П – ruakh