Я использую следующее, чтобы рекурсивно искать в каталоге определенную строку и заменять ее другой:
grep -rl oldstr path | xargs sed -i 's/oldstr/newstr/g'
Это работает нормально. Единственная проблема в том, что если строка не существует, то sed
завершается ошибкой, потому что не получает никаких аргументов. Это проблема для меня, так как я запускаю это автоматически с помощью ANT, и сборка завершается неудачно, поскольку sed
не работает.
Есть ли способ сделать его отказоустойчивым, если строка не найдена?
Меня интересует однострочное простое решение, которое я могу использовать (не обязательно с grep
или sed
, но с такими общими командами unix, как эти).