查找缺少 OSX 的资源

查找缺少 OSX 的资源

在 OSX(big sur -so Zhell)上,我有一个包含 .bundle 文件的文件夹,每个包包含多个文件和文件夹。大多数文件都有一个名为 PNG_.zip 的资源,有些则没有。

所以如果我运行这个:

find ~/Desktop/test  -name "PNG_.zip"  

它将输出包含 PNG_.zip 的任何内容。

然而我想找到所有的项目不包含 PNG_.zip我怎样才能做到这一点?

谢谢!

答案1

使用 zsh全局限定符,假设捆绑包是目录。

首先,以下是如何在当前目录下的任何位置查找包目录:

print -rC1 -- **/*.bundle(/N)
  • **/…匹配嵌套子目录中的文件。
  • (/)将匹配限制为目录。
  • (N)结果是一个空列表,而不是在没有匹配项时出错。

然后过滤结果以仅保留捆绑包而不保留PNG_.zip任何地方:

print -rC1 -- **/*.bundle(/Ne['()(($#==0)) $REPLY/**/PNG_.zip(NDY1)'])
  • (e['…'])过滤匹配项:仅保留表达式为 true 的匹配项。该代码会针对每场比赛依次执行,并$REPLY设置为比赛。
  • ()(($#==0)) …测试是否扩展为长度为 0 的单词列表,即(作为单词列表)是否为空。
  • (Y1)是一种优化,一旦找到 1 个匹配就停止遍历目录。(D)( ) 还可以在包目录的隐藏子目录中dotglob查找文件。PNG_.zip

答案2

我相信:

   $ find . -type f \(  ! -iname "*PNG_.zip*" \)

确实有窍门。 !运算符否定搜索模式。所以你会得到所有不匹配的文件。

相关内容