加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 在find中使用-print0和-o

发布时间:2020-12-16 01:36:29 所属栏目:安全 来源:网络整理
导读:我使用-print0来修改find??的输出以使用NULL终止符而不是换行符.但是,当使用find的-o(OR)函数时,我无法使其工作. 这样可以正常工作,它会打印出一个以换行符分隔的文件列表,这些文件不是由用户’pieter’拥有或者不是由’www-data’组拥有的: find . ! -user
我使用-print0来修改find??的输出以使用NULL终止符而不是换行符.但是,当使用find的-o(OR)函数时,我无法使其工作.

这样可以正常工作,它会打印出一个以换行符分隔的文件列表,这些文件不是由用户’pieter’拥有或者不是由’www-data’组拥有的:

find . ! -user pieter -o ! -group www-data

但是,当我将-print0附加到此时,我再也没有输出:

find . ! -user pieter -o ! -group www-data -print0

然而,这工作正常:

find . ! -user pieter -print0

我错过了什么?我已经尝试添加各种括号括号,但无济于事.

你错过了parens.请注意,您必须转义它们,以便shell传递它们:
find . ( ! -user pieter -o ! -group www-data ) -print0

您可以找到有关查找on its man page的更多信息,尤其是在“示例”部分中.

如果您想知道为什么这是必要的,那是因为order of operations.lick中的每个表达式都返回true或false.如果未在表达式之间放置显式运算符(-a,-o或,),则假定为-a.

所以,你的原始命令相当于find. ! – 用户pieter -o! -group www-data -a -print0,它只评估用户pieter拥有的文件上的print0,但不评估组www-data.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读