Обработка списка файлов, созданного 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.