обработка списка файлов, созданного grep, но имена имеют пробелы - PullRequest
0 голосов
/ 13 февраля 2012

Я пытаюсь использовать вывод команды 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 в файл и затем прочитать его, но теперь я хочу знать, возможно ли это как-то в одну строку.

1 Ответ

0 голосов
/ 13 февраля 2012

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

...