0

我正在尝试使用 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 我知道我可以使用-print0and xargs -0,但似乎没有任何等效的grep.

我可以将输出grep放入一个文件中,然后读取它,但现在我想知道这是否有可能作为单行。

4

1 回答 1

0

我的 grep 有一个 -Z --null 选项可以在每个文件名之后输出 NUL,你可以将它与 perl -0 一起使用。

于 2012-02-13T19:07:02.207 回答