find中的-prune选项有什么作用?
我可以看到-prune find
无法正常工作。我猜-name "efence*"
-prune选项应该选择(或查找)除名称efence*
正确的文件以外的所有文件?
还是我理解错误?
我执行的命令: find * -maxdepth 0 -name "efence*" -prune
:选择当前目录(maxdepth 0
)中除名称* efence以外的所有文件。
请帮我理解 -prune
回答:
尝试
find * -maxdepth 0 -name "efence*" -prune -o -print
如果未指定其他选项,则该prune
选项 会 打印匹配的文件(但是,它仍然阻止find
递归到匹配的目录中)。
编辑添加说明:
find
表达式区分tests
和actions
。来自man find
:
该表达式由选项(影响整体操作而不是特定文件的处理,并且始终返回true),测试(返回true或false值)和操作(具有副作用并返回true或true)组成。假值),全部由运算符分隔。
-and
假设省略了运算符。[我的重点]
-prune
具有副作用的操作也是这样,该操作find
不会递归到与先前测试匹配的子目录中(在您的情况下为-maxdepth 0 -name
"efence*")。但是,就表达式的真值而言,它等同于
find * -maxdepth 0 -name "efence*" -true
并且由于您未指定任何其他操作,-print
因此假设该假设(该假设始终存在,因为它允许您键入例如find . -name
"*.java"而不是find . -name "*.java" -print
)。
希望有道理。在其他线程上接受的答案谈论的是同一件事。
以上是 find中的-prune选项有什么作用? 的全部内容, 来源链接: utcz.com/qa/413938.html