在 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 结果但应该有结果的查询示例,将会很有帮助。
因为我使用的是 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 结果但应该有结果的查询示例,将会很有帮助。