当前位置: 首页 > 面试题库 >

find中的-prune选项有什么作用?

司马宏茂
2023-03-14
问题内容

我可以看到-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-print是在该表达式为true的所有文件执行。[我的重点]

-prune具有副作用的操作也是这样,该操作find不会递归到与先前测试匹配的子目录中(在您的情况下为-maxdepth 0 -name "efence*")。但是,就表达式的真值而言,它等同于

find * -maxdepth 0 -name "efence*" -true

并且由于您未指定任何其他操作,-print因此假设该假设(该假设始终存在,因为它允许您键入例如find . -name "*.java"而不是find . -name "*.java" -print)。

希望有道理。在其他线程上接受的答案谈论的是同一件事。



 类似资料:
  • 本文向大家介绍组件中写name选项有什么作用?相关面试题,主要包含被问及组件中写name选项有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 项目使用keep-alive时,可搭配组件name进行缓存过滤 DOM做递归组件时需要调用自身name vue-devtools调试工具里显示的组见名称是由vue中组件name决定的

  • 问题内容: 我找到了有关快速会话的教程,并且它们具有proxy:true选项。我可以保留为真吗?这是做什么的?包含它更好吗?我知道什么是代理,但是我真的不明白为什么这是一个选择? 问题答案: 该精细的手工状态: 设置安全cookie(通过“ X-Forwarded-Proto”标头)时,请信任反向代理。 这是指客户端不通过反向代理直接连接到您的节点服务器的情况。例如,客户端连接到NGINX Web

  • 问题内容: javac 的(局部变量调试信息)选项究竟提供了什么作为输出。 做一些测试,没有附加信息(例如-g:source,lines和-g:source,lines,vars之间没有区别。 请问有人举了这些局部变量调试信息的例子吗? 问题答案: 从javadocs: -g生成所有调试信息,包括局部变量。默认情况下,仅生成行号和源文件信息。 这在编译时不会产生可见的输出,但是会在运行时用于调试。

  • jlink压缩选项是做什么的?oracle留档对此不是很详细: 压缩的资源是什么?有什么缺点吗?

  • 问题内容: 我在其中找到了以下代码,并且想知道空语句在Go中的作用。 问题答案: 空语句将永远 阻塞 。它类似于空语句。 在大多数(全部?)受支持的Go架构上,空选择将产生CPU。空的for循环不会,即它将在100%CPU上“旋转”。

  • 问题内容: 我在看Java regex教程,标题说明了很多。看起来Matcher.lookingAt()试图匹配整个String。真的吗? 问题答案: Matcher.lookingAt的文档清楚地说明了该区域尝试匹配的内容: 与方法一样,此方法始终从区域的开头开始;与该方法不同,它不需要匹配整个区域。 因此,不需要,不需要匹配整个字符串。那么和之间有什么区别?从Matcher Javadoc概述