gpt4 book ai didi

bash - xargs grep 忽略不满足查询的文件

转载 作者:行者123 更新时间:2023-11-29 09:18:40 25 4
gpt4 key购买 nike

关于使用 xargs 执行 grep 的快速问题。当我这样做时,我会看到一堆来自不存在的文件的结果,中间夹杂着成功匹配搜索条件的文件,例如:

find . | xargs grep 'Cache'

grep: PT: No such file or directory
grep: Sans: No such file or directory
grep: Free: No such file or directory
grep: Font: No such file or directory
grep: License.txt: No such file or directory

是否可以传递一个只显示匹配的参数?

谢谢。

最佳答案

文件名包含空格,因此您需要告诉 find 输出由 NUL 字节而不是换行符分隔的结果 - 请尝试以下操作:

find . -print0 | xargs -0 egrep 'Cache'

-0xargs 表示将来自 STDIN 的数据解释为由 NUL 字节分隔。 (Cache 两边的单引号在这里是不必要的。)

类 Unix 系统上的许多工具同样可以选择生产或消费由 NUL 字节分隔的数据,因为 0x000x2F(正斜杠)是文件或目录中唯一不允许的两个字节名称 - 这是安全处理带空格的文件名的常用方法或换行符。

最后要注意的是,要非常挑剔,您可能希望将其更改为:

xargs -0 egrep Cache /dev/null

... 这样您就可以确定 grep 总是有多个参数,并且您得到的输出始终以文件名作为前缀。

关于bash - xargs grep 忽略不满足查询的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5700202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com