在 MacOS Catalina 上使用 mdfind 定位函数

Posted

技术标签:

【中文标题】在 MacOS Catalina 上使用 mdfind 定位函数【英文标题】:Make a function locate using mdfind on MacOS Catalina 【发布时间】:2020-08-11 12:16:29 【问题描述】:

由于我使用的是 MacOS Catalina,我想从有用的mdfind 中受益,以查找与名称匹配的任何文件或目录。

我想覆盖定位功能(经典功能,仍可通过键入\locate 使用。

这里是位于~/bin/locate 中的小二进制文件:

#!/bin/bash

if [ "$2" != "" ]; then
  mdfind "kMDItemDisplayName == '*$(echo $1)*'c" -onlyin "$2"
else
  mdfind "kMDItemDisplayName == '*$(echo $1)*'c"
fi

如果没有第二个参数,我想查找与 $1(第一个参数)匹配且不区分大小写的所有文件。

如果有第二个参数,它对应于我们想要进行研究的路径。

但是这个新功能定位效果不好。有时会找到文件,有时却找不到,我不明白为什么?

如何修改此脚本以匹配参数 $1 提供的子字符串,特别是,我不知道我是否必须使用 @ 执行 $(echo $1)$(echo "$1")echo "$1""$1" 或其他事情987654329@选项?

我只想找到文件的所有子字符串(如果可能的话,可能还有目录)。我不想使用 Linux "locate",因为我必须每次都更新,不像 mdfind 总是更新。

【问题讨论】:

【参考方案1】:

并非所有项目都有显示名称,但大多数项目似乎都有一个。如果要搜索文件名,请使用 kMDItemFSName。 FS 表示文件系统。

我也认为不需要echo:mdfind "kMDItemDisplayName == '*$1*'c" -onlyin "$2"

如果您提供一个没有返回结果但应该返回结果的查询示例,将会很有帮助。

【讨论】:

以上是关于在 MacOS Catalina 上使用 mdfind 定位函数的主要内容,如果未能解决你的问题,请参考以下文章

在 macOS Catalina 上安装 RcppArmadillo 时出错 [重复]

macOS Catalina 上的 RODBC

无法在 macOS Catalina 10.15.4 上安装 bsddb3 Python 包

辅助功能检查器无法在 MacOS Catalina 和 Mojave 上的 Xcode 11.x、iOS 13.x 上运行

MacBook Pro(13 英寸,2011 年末)A1278 官方最高支持macOS High Sierra,使用macOS Catalina Patcher成功安装macOS Catalina

直观对比:macOS Big Sur较Catalina迎来了多大程度上的UI设计改进?