使用“-prune”时,从“find”命令中省略“-print”

2024-04-18

我一直无法完全理解 find 命令的 -prune 操作。但实际上,至少我的一些误解源于省略“-print”表达的影响。

从“查找”手册页..

“如果表达式除 -prune 之外不包含任何操作,则对表达式为 true 的所有文件执行 -print。”

..我一直(多年来)认为这意味着我可以省略“-print”。

然而,正如下面的例子所示,有is使用“-print”和省略“-print”之间的区别,至少在出现“-prune”表达式时是这样。

首先,我的工作目录下有以下8个目录..

aqua/
aqua/blue/
blue/
blue/orange/
blue/red/
cyan/blue/
green/
green/yellow/

这8个目录下总共有10个文件。

aqua/blue/config.txt
aqua/config.txt
blue/config.txt
blue/orange/config.txt
blue/red/config.txt
cyan/blue/config.txt
green/config.txt
green/test.log
green/yellow/config.txt
green/yellow/test.log

我的目标是使用“查找”来显示文件路径中不包含“蓝色”的所有常规文件。有五个文件符合此要求。

这按预期工作..

% find . -path '*blue*' -prune -o -type f -print
./green/test.log
./green/yellow/config.txt
./green/yellow/test.log
./green/config.txt
./aqua/config.txt

但是,当我省略“-print”时,它不仅返回五个所需的文件,而且还返回路径名包含“blue”的任何目录。

% find . -path '*blue*' -prune -o -type f
./green/test.log
./green/yellow/config.txt
./green/yellow/test.log
./green/config.txt
./cyan/blue
./blue
./aqua/blue
./aqua/config.txt

那么为什么会显示三个“蓝色”目录呢?

这可能很重要,因为我经常尝试删除包含超过 50,000 个文件的目录结构。当处理该路径时,我的 find 命令,特别是如果我对每个文件执行“-exec grep”,可能会花费大量时间来处理我完全不感兴趣的文件。我需要确信 find 不会进入修剪后的结构。


隐含的-print适用于整个表达式,而不仅仅是最后一部分。

% find . \( -path '*blue*' -prune -o -type f \) -print
./green/test.log
./green/yellow/config.txt
./green/yellow/test.log
./green/config.txt
./cyan/blue
./blue
./aqua/blue
./aqua/config.txt

它不会下降到修剪的目录中,但会打印出顶层。

稍作修改:

$ find . ! \( -path '*blue*' -prune \) -type f
./green/test.log
./green/yellow/config.txt
./green/yellow/test.log
./green/config.txt
./aqua/config.txt

(隐含的-a)会导致有和没有相同的行为-print.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用“-prune”时,从“find”命令中省略“-print” 的相关文章

随机推荐

  • 直接在Scipy稀疏矩阵上使用Intel mkl库以更少的内存计算A点A.T

    我想打电话mkl mkl scsrmultcsr https software intel com en us node 468640来自蟒蛇 目标是计算稀疏矩阵 C压缩稀疏行 http docs scipy org doc scipy 0
  • numpy.float64 不可迭代

    我正在尝试打印一个使用 numpy 数组和列表中的多个参数的函数 但我不断收到错误 numpy float 64 对象不可迭代 我在论坛上查看了关于这个主题的几个问题 并尝试了不同的答案 但似乎都不起作用 或者我可能做错了什么 我仍然是 p
  • Laravel查看路径错误

    当我更新视图文件时 我从旧路径获取视图文件 我有一个指向 IP vps 的域 我在其中安装了 laravel 让我们称之为 123 com 当我访问该域时 我会得到旧的视图路径 即我从中复制 Laravel 安装的文件夹的路径 该文件夹名为
  • 指定不同访问器中静态局部变量的构造/销毁顺序

    我遇到了崩溃cxa finalize运行一个程序 这是一个程序 而不是其中的库 ac test exe Assertion failed AcLock cpp 54 AcLock libc abi dylib terminate calle
  • 面试 - 查找数组中的幅度极点

    幅度极点 数组中左侧元素小于或等于它且右侧元素大于或等于它的元素 输入示例 3 1 4 5 9 7 6 11 期望的输出 4 5 11 我在面试中被问到这个问题 我必须返回元素的索引 并且只返回第一个满足条件的元素 My logic 取两个
  • 在 C# 中使用布尔标志来停止线程运行是否安全

    我主要关心的是布尔标志 在没有任何同步的情况下使用它是否安全 我在几个地方读到它是原子的 包括文档 class MyTask private ManualResetEvent startSignal private CountDownLat
  • 在存在 PDF iframe 的情况下选择文本后,文本输入开始向后输入

    预期的行为是什么 用户应该始终以正确的方向输入 即使他们以这种方式进行文本选择 什么地方出了错 如果我通过从右向左拖动鼠标并以 PDF iframe 结尾来选择输入 文本区域的文本 那么如果我开始键入 字符会向后插入 视频示例 https
  • 异步 servlet 不异步运行

    我有一个 servlet 它接受请求并写入长响应 响应位于使用 Thread sleep 1000 模拟长时间运行操作的循环中 我试图在这里设置一个异步请求 如代码所示 但它不起作用 当我向 servlet 调用多个请求时 它们都是连续执行
  • 在 pandas 中的列元素旁边添加数值

    这是我问的问题的进一步部分here https stackoverflow com questions 51574485 match keywords in pandas column with another list of elemen
  • 使用 HTML 输入类型文件从网络摄像头捕获摄像机录制视频

    在我的公司 我的任务是建立一个网站 用户可以在其中录制视频 这将被发送到服务器 一些事情将被完成 用户最终会收到一封电子邮件 嵌入该视频的微型网站的链接 经过一番研究 我得出的结论是 至少目前这是不可能的 在 iPad 上使用 getUse
  • typescript 参数可以注释为 const 吗?

    如果我不希望函数作用域内的参数值发生变化 有什么方法可以用 Typescript 对其进行注释吗 我试过了 function walk const fileName string string 但这不起作用 现在没有办法做到 也可能做不到
  • 应用程序崩溃后套接字仍在侦听

    我在 Windows 2008x64 上使用我的 C 应用程序之一时遇到问题 同一应用程序在 Windows 2003x64 上运行得很好 崩溃后 甚至有时在定期关闭 重新启动周期后 使用端口 82 上的套接字时会出现问题 它需要接收命令
  • 计算字符串中的常见字符 Python

    该代码的输出仍然是 4 但是 输出应该是 3 存在集合交集 因为我相信这是答案的关键 答案是 4 而不是 3 的原因来自于 s1 中与 s2 匹配的 2 个 qs 和 1 个 r 的数量 s2 qsrqq s1 qqtrr counts1
  • 未选择值的 DropDownList

    我在编辑页面内使用 DropDownListFor 辅助方法 但没有运气让它选择我指定的值 我注意到一个类似的问题 https stackoverflow com questions 1916462 dropdownlistfor in e
  • 有没有办法在 Azure DevOps Pipelines YAML 中参数化/动态设置变量组名称?

    我有一个嵌套的 Azure DevOps YAML 管道 name Some Release Pipeline trigger none variables group DEV VARIABLE GROUP This is the envi
  • 从 PHP 脚本调用节点

    我正在尝试使用 PHP 脚本调用节点脚本exec output exec usr bin node home user nodescript js nodescript js 是 var Scraper require google ima
  • Mac OSX 捆绑包的图标

    我编译了一个名为 MyBundle bundle 的 Mac OSX 捆绑包 它用作另一个应用程序的插件 我希望捆绑包有一个独特的图标 因此我将 Info plist 文件设置为
  • AspectJ 是如何工作的?

    我正在尝试了解 Aspect 的工作原理 我有 C C 背景 但魔法永远不会发生 我知道你可以用注释一些函数 Aspect然后写下Aspect的实现等等 但是 新代码是如何 以及在 什么时间 生成的 假设我没有编辑器 我使用编译java类j
  • elasticsearch中@timestamp和timestamp字段的区别

    当我使用日志存储向弹性搜索记录一些请求时 它将 timestamp 字段作为时间 当我使用 NEST 记录这些请求并设置时间戳字段时 它会放置时间戳字段 当我使用 kibana 查看数据时 这两个字段具有单独的名称 他们之间有什么区别 ti
  • 使用“-prune”时,从“find”命令中省略“-print”

    我一直无法完全理解 find 命令的 prune 操作 但实际上 至少我的一些误解源于省略 print 表达的影响 从 查找 手册页 如果表达式除 prune 之外不包含任何操作 则对表达式为 true 的所有文件执行 print 我一直