Search code examples
macosspotlight

Can Mac OS X's Spotlight be configured to ignore certain file types?


I've got bunches of auxiliary files that are generated by code and LaTeX documents that I dearly wish would not be suggested by SpotLight as potential search candidates. I'm not looking for example.log, I'm looking for example.tex!

So can Spotlight be configured to ignore, say, all .log files?

(I know, I know; I should just use QuickSilver instead…)


@diciu That's an interesting answer. The problem in my case is this:

Figure out which importer handles your type of file

I'm not sure if my type of file is handled by any single importer? Since they've all got weird extensions (.aux, .glo, .out, whatever) I think it's improbable that there's an importer that's trying to index them. But because they're plain text they're being picked up as generic files. (Admittedly, I don't know much about Spotlight's indexing, so I might be completely wrong on this.)


@diciu again: TextImporterDontImportList sounds very promising; I'll head off and see if anything comes of it.

Like you say, it does seem like the whole UTI system doesn't really allow not searching for something.


@Raynet Making the files invisible is a good idea actually, albeit relatively tedious for me to set up in the general sense. If worst comes to worst, I might give that a shot (but probably after exhausting other options such as QuickSilver). (Oh, and SetFile requires the Developer Tools, but I'm guessing everyone here has them installed anyway :) )


Solution

  • @Will - these things that define types are called uniform type identifiers.

    The problem is they are a combination of extensions (like .txt) and generic types (i.e. public.plain-text matches a txt file without the txt extension based purely on content) so it's not as simple as looking for an extension.

    RichText.mdimporter is probably the importer that imports your text file. This should be easily verified by running mdimport in debug mode on one of the files you don't want indexed:

    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.
    
    

    The type that matches in my example is public.plain-text.

    I've no idea how you actually write an extension-based exception for an UTI (like public.plain-text except anything ending in .log).

    Later edit: I've also looked though the RichText mdimporter binary and found a promising string but I can't figure out if it's actually being used (as a preference name or whatever):

    cristi:FoodBrowser diciu$ strings /System/Library/Spotlight/RichText.mdimporter/Contents/MacOS/RichText |grep Text
    
    TextImporterDontImportList