在 MacOS Catalina 上使用 mdfind 定位函数

Make a function locate using mdfind on MacOS Catalina

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

我想重写定位功能(经典功能,输入 \locate 仍然可用。

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

#!/bin/bash

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

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

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

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

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

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

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

另外我觉得没必要 echo:
mdfind "kMDItemDisplayName == '**'c" -onlyin ""

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