处理由grep生成的文件列表,但名称有空格

时间:2012-02-13 18:40:24

标签: grep whitespace backticks

我正在尝试使用grep命令的输出来替换所有找到的文件。问题是找到的一些文件名称中有空格。这是一个grep命令,简化了我使用的命令(在多个邮件主机上找到多个名称)。

grep -Ril oldname@foo.com *

这会生成一个包含我需要的文件的列表,只列出文件名(-l选项)。使用反引号我将文件名输入Perl one-liner:

perl -pi -e 's/oldname\@foo\.com/newname\@bar.com/gi' `grep -Ril oldname@foo.com *`

如果列出的文件中没有一个文件的名称中有空格,但是当一个文件执行时,它会中断。

通过查找我知道我可以使用-print0xargs -0,但似乎没有grep的任何内容。

我可以将grep的输出放到一个文件中,然后阅读,但现在我想知道这是否可以作为一个单行使用。

1 个答案:

答案 0 :(得分:0)

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