我正在尝试使用 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
and xargs -0
,但似乎没有任何等效的grep
.
我可以将输出grep
放入一个文件中,然后读取它,但现在我想知道这是否有可能作为单行。