我的常见做法之一是对某种类型的所有文件执行抓取,例如,找到其中包含单词“ rumpus”的所有HTML文件。为此,我使用
find /path/to -name "*.html" | xargs grep -l "rumpus"
有时,find
会返回名称中带有空格的文件,例如my new file.html
。当xargs
将此传递给时grep
,出现以下错误:
grep: /path/to/bad/file/my: No such file or directory
grep: new: No such file or directory
grep: file.html: No such file or directory
我可以看到这里发生了什么:管道或xargs
将空格视为文件之间的分隔符。但是,对于我的一生,我无法弄清楚如何防止这种行为。可以用find
+ 完成xargs
吗?还是我必须使用完全不同的命令?