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