在MacOS Catalina上使用mdfind进行函数定位



由于我使用的是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提供的子字符串,尤其是,我不知道是否必须使用kMDItemDisplayName选项执行$(echo $1)$(echo "$1")echo "$1""$1"或其他操作?

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

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

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

如果您提供一个查询示例,该查询虽然应该返回结果,但没有返回结果,这将非常有用。

最新更新