Обработка списка файлов, созданного grep, но имена имеют пробелы

Я пытаюсь использовать вывод команды 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 *`

Это работает, когда ни один из перечисленных файлов не имеет пробелов в именах, но когда он есть, он ломается.

С находкой я знаю, что мог бы использовать -print0 а также xargs -0но, похоже, нет ничего эквивалентного grep,

Я мог бы поставить вывод из grep в файл, а затем прочитать это, но теперь я хочу знать, возможно ли это как-то в одной строке.

1 ответ

Мой grep имеет опцию -Z --null для вывода NUL после каждого имени файла, вы можете использовать это с perl -0.

Другие вопросы по тегам