我正在尝试使用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 *`
如果列出的文件中没有一个文件的名称中有空格,但是当一个文件执行时,它会中断。
通过查找我知道我可以使用-print0
和xargs -0
,但似乎没有grep
的任何内容。
我可以将grep
的输出放到一个文件中,然后阅读,但现在我想知道这是否可以作为一个单行使用。
答案 0 :(得分:0)
我的grep有一个-Z --null选项,可以在每个文件名后输出NUL,你可以使用perl -0。