Skip to main content

~/christopher.loessl

mdfind & mdls & Spotlight

Searching for files with Spotlight is awesome and you can actually use the power of Spotlight even in the console. But first let me show you some nice features of Spotlight.

Spotlight

Searching for all images that contain me, are of kind image and were taken with flash:

mdfind kind:image flash:1

Spotlight supports a whole lot of these search fields like, duration, pixel height, width, last opened, ISO speed, aperture, exposure time and so forth for a full list check this PDF.

mdfind

Now let’s move over to the console. Here you can do this cool stuff with a tool called mdfind.

Let’s find all audio files that are longer than 10 minutes:

mdfind -interpret 'duration:>=600 kind:music'

-interpret interprets the search string as if you typed it into Spotlight. mdfind supports another mode in which you can search on fields of the meta information directly.

mdfind -literal 'kMDItemDurationSeconds > 600 && kMDItemContentTypeTree == public.audio'

All mp3s that are longer than 10 minutes:

mdfind 'kMDItemDurationSeconds > 600 && kMDItemKind = "MPEG Audio Layer 3"'

All ATP podcasts:

mdfind '(kMDItemAuthors == "atp"cdw)'

cdw stands for:

  • ignore case
  • ignore diacritical
  • word based

All by the 5by5 network

mdfind 'kMDItemAuthors = "*5by5.tv*"'

Both are of course possible in Spotlight as well by simply searching for:

author:atp
author:5by5

Find all pictures taken with an iPhone 4S on the last day of the year 2011 and the first day of 2012. The range includes the from date but not the until date.

mdfind 'kind:image created:31/12/11-2/1/12 model:"iPhone 4S"'

mdls

How to figure out these strange looking search fields, that’s where mdls comes into play.

mdls <file>

Prints out all meta information fields for that file. With mdfind you can then search for those fields.

If you are curious about all possible field values you can get them with

mdimport -X

and

mdimport -A

Be warned, it is a lot of information.

Final note

It’s worth having a look at the man page of these commands and the help provided with mdfind -h because the information is not consistent. For example the man page doesn’t tell you about the -s flag which brings smart folders to the command line.

And for the curious how I came across mdfind. I stumbled upon that command while reading this blog post by Brett Terpstra.

Sources: Spotlight reference MacDevCenter about mdfind