Я пытаюсь использовать вывод команды grep для замены всех найденных файлов. Проблема в том, что некоторые из найденных файлов имеют пробелы в именах. Вот команда grep, упрощенная с той, которую я использую (которая находит несколько имен на нескольких почтовых хостах).
grep -Ril oldname@foo.com *
В результате получается список, в котором есть нужные мне файлы, просто перечисляются имена файлов (опция -l
). Используя обратные пометки, я передаю имена файлов в однострочную строку Perl:
perl -pi -e 's/oldname\@foo\.com/newname\@bar.com/gi' `grep -Ril oldname@foo.com *`
Это работает, когда ни один из перечисленных файлов не имеет пробелов в именах, но когда он есть, он ломается.
С помощью find я знаю, что могу использовать -print0
и xargs -0
, но, похоже, нет ничего эквивалентного grep
.
Я мог бы поместить вывод из grep
в файл и затем прочитать его, но теперь я хочу знать, возможно ли это как-то в одну строку.