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表达式区分testsactions。来自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

回到顶部