代码之家  ›  专栏  ›  技术社区  ›  Will Robertson

Mac OS X的聚光灯是否可以配置为忽略某些文件类型?[关闭]

  •  6
  • Will Robertson  · 技术社区  · 16 年前

    我有一堆辅助文件,它们是由我非常希望的代码和乳胶文件生成的。 不会 被聚光灯公司推荐为潜在的搜索候选人。我不是在找 example.log ,我在找 example.tex !

    所以聚光灯可以配置为忽略,比如说,所有 .log 文件夹?

    (我知道,我知道,我应该用水银代替)


    @ diciu 这是一个有趣的答案。我的问题是:

    找出哪个导入程序处理您的文件类型

    我不确定我的文件类型是否由任何一个进口商处理?因为它们都有奇怪的扩展名(.aux,.glo,.out,随便什么),我认为不可能有一个进口商 尝试 对它们进行索引。但是因为它们是纯文本,所以被当作通用文件来使用。(不可否认,我对Spotlight的索引不太了解,所以我可能完全错了。)


    @ diciu 再一次: TextImporterDontImportList 听起来很有希望,我去看看是否有什么结果。

    就像你说的,整个UTI系统似乎不允许 寻找某物。


    @ Raynet 使文件不可见实际上是一个好主意,尽管从一般意义上说,设置文件相对比较繁琐。如果最坏的情况变成最坏的情况,我可能会试一试(但可能是在用尽其他选择之后,如水银)。(噢,而且setfile需要开发人员工具,但我猜这里的每个人都安装了它们 :) )

    4 回复  |  直到 12 年前
        1
  •  3
  •   diciu    16 年前

    @will-这些定义类型的东西被称为 uniform type identifiers .

    问题是,它们是扩展名(如.txt)和通用类型(即public.plain-text与不带纯基于内容的txt扩展名的txt文件匹配)的组合,因此它不像查找扩展名那么简单。

    richtext.mdimporter是 可能 导入文本文件的导入程序。 通过在调试模式下对不需要索引的某个文件运行mdimport,可以轻松验证这一点:

    cristi:~ diciu$ echo "All work and no play makes Jack a dull boy" > ~/input.txt
    cristi:~ diciu$ mdimport -d 4 -n ~/input.txt 2>&1 | grep Imported
        kMD2008-09-03 12:05:06.342 mdimport[1230:10b] Imported '/Users/diciu/input.txt' of type 'public.plain-text' with plugIn /System/Library/Spotlight/RichText.mdimporter.
    
    

    在我的示例中匹配的类型是public.plain-text。

    我不知道您实际如何为UTI编写基于扩展的异常(如public.plain-text,除了以.log结尾的任何内容)。

    稍后编辑:我还查看了richtext mdimporter二进制文件,找到了一个有前途的字符串,但我无法确定它是否实际被使用(作为首选项名称或其他名称):

    cristi:FoodBrowser diciu$ strings /System/Library/Spotlight/RichText.mdimporter/Contents/MacOS/RichText |grep Text
    
    TextImporterDontImportList
    
    
        2
  •  2
  •   D2VIANT    16 年前

    不确定如何在文件类型级别执行此操作,但可以在文件夹级别执行此操作:

    来源: http://lists.apple.com/archives/spotlight-dev/2008/Jul/msg00007.html

    使聚光灯忽略文件夹

    如果您绝对不能重命名文件夹,因为其他软件依赖于它,另一种方法是继续并重命名目录以“.noindex”结尾,然后在同一位置使用原始名称创建指向实际位置的符号链接。

    大多数软件都乐于使用具有原始名称的symlink,但spotlight会忽略symlinks,并会注意到“real”名称以*.noindex结尾,并且会忽略该位置。

    可能有点像:

    mv原始名称originalname.noindex ln-s原始名称.noindex
    原名

    LS-L

    lrwxr-xr-x 1 andy admin,2008年1月24日 原始名称->原始名称.noindex drwxr-xr-x 11 andy admin 374 7月11日 07:03原件.noindex

        3
  •  2
  •   diciu    16 年前

    这就是它 可以 工作。

    注释 :作为系统更新,这不是一个很好的解决方案 覆盖将要执行的更改。

    获取所有导入者的列表

    cristi:~ diciu$ mdimport -L
    2008-09-03 10:42:27.144 mdimport[727:10b] Paths: id(501) (
        "/System/Library/Spotlight/Audio.mdimporter",
        "/System/Library/Spotlight/Chat.mdimporter",
        "/Developer/Applications/Xcode.app/Contents/Library/Spotlight/SourceCode.mdimporter",
    

    找出哪个导入程序处理您的文件类型(例如音频导入程序):

    cristi:~ diciu$ cat /System/Library/Spotlight/Audio.mdimporter/Contents/Info.plist 
    
    
    
    
    [..]
                CFBundleTypeRole
                MDImporter
                LSItemContentTypes
                
                    public.mp3
                    public.aifc-audio
                    public.aiff-audio
    
    

    更改导入程序的plist以删除要忽略的类型。

    重新导入导入者的类型,以便系统接收更改:

    mdimport -r /System/Library/Spotlight/Chat.mdimporter
    
        4
  •  1
  •   Raynet    16 年前

    唯一的选择可能是让它们不被聚光灯索引,因为出于某种原因,您不能进行负搜索。可以搜索具有特定文件扩展名的文件,但不能搜索不匹配的文件。

    您可以尝试使这些文件对finder不可见,spotlight不会索引不可见的文件。在文件上设置KisInvisible标志的命令是:

    setfile-a v[文件名]