0

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

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

4

1 回答 1

1

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

另外我认为没有必要echo
mdfind "kMDItemDisplayName == '*$1*'c" -onlyin "$2"

如果您提供一个查询示例,该示例没有返回结果,尽管它应该有,这将很有帮助。

于 2020-04-27T20:19:58.760 回答