由于我使用的是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"
如果您提供一个查询示例,该查询虽然应该返回结果,但没有返回结果,这将非常有用。