# mdfind — Spotlight-Suche auf der Kommandozeile

> Praxis-Guide zu mdfind: macOS-Spotlight-Suche im Terminal — schnelle Datei- und Metadaten-Queries über den Spotlight-Index, plus mdls und mdutil.

Source: https://www.jpkc.com/db/cheatsheets/macos/mdfind/

<!-- PROSE:intro -->
`mdfind` durchsucht den Spotlight-Index direkt von der Kommandozeile – und ist damit deutlich schneller als `find`, weil es keine Verzeichnisse durchläuft, sondern eine fertige Datenbank abfragt. Du suchst nicht nur nach Dateinamen, sondern auch nach Inhalten und Metadaten: Bilder ab einer bestimmten Auflösung, Dateien aus einem bestimmten Download, alles seit gestern Geänderte. Mit `kMDItem`-Attributen formulierst du dabei erstaunlich präzise Abfragen. Dieser Guide zeigt dir die wichtigsten Befehle für den Alltag – ergänzt um `mdls` zum Auslesen der Metadaten einer Datei und `mdutil` zur Verwaltung des Index selbst.
<!-- PROSE:intro:end -->

## mdfind — Basis-Suche

`mdfind '<query>'` — Sucht Dateien, die zu einer Abfrage passen (wie Spotlight).

```bash
mdfind 'invoice 2026'
```

`mdfind -name '<filename>'` — Sucht nur nach dem Dateinamen.

```bash
mdfind -name 'docker-compose.yml'
```

`mdfind -onlyin <dir> '<query>'` — Beschränkt die Suche auf ein bestimmtes Verzeichnis.

```bash
mdfind -onlyin ~/Projects 'TODO'
```

`mdfind -count '<query>'` — Zeigt nur die Anzahl der Treffer.

```bash
mdfind -count -name '*.pdf'
```

`mdfind -live '<query>'` — Beobachtet fortlaufend neue Treffer (Live-Abfrage).

```bash
mdfind -live 'screenshot'
```

## mdfind — Metadaten-Abfragen

`mdfind 'kMDItemContentType == "<type>"'` — Findet Dateien anhand des Inhaltstyps (UTI).

```bash
mdfind 'kMDItemContentType == "public.png-image"'
```

`mdfind 'kMDItemKind == "<kind>"'` — Findet Dateien anhand ihrer Art (Kind).

```bash
mdfind 'kMDItemKind == "PDF Document"'
```

`mdfind 'kMDItemFSSize > <bytes>'` — Findet Dateien, die größer als eine bestimmte Größe sind.

```bash
mdfind 'kMDItemFSSize > 100000000'
```

`mdfind 'kMDItemContentModificationDate > $time.today(-7)'` — Findet Dateien, die in den letzten 7 Tagen geändert wurden.

```bash
mdfind 'kMDItemContentModificationDate > $time.today(-7)'
```

`mdfind 'kMDItemWhereFroms == "*example.com*"'` — Findet Dateien, die von einer bestimmten Domain heruntergeladen wurden.

```bash
mdfind 'kMDItemWhereFroms == "*github.com*"'
```

`mdfind 'kMDItemPixelWidth > 3000 && kMDItemContentType == "public.jpeg"'` — Findet hochauflösende JPEG-Bilder.

```bash
mdfind 'kMDItemPixelWidth > 3000 && kMDItemContentType == "public.jpeg"'
```

## mdls — Datei-Metadaten

`mdls <file>` — Zeigt alle Spotlight-Metadaten-Attribute einer Datei.

```bash
mdls photo.jpg
```

`mdls -name <attribute> <file>` — Zeigt ein bestimmtes Metadaten-Attribut.

```bash
mdls -name kMDItemContentType document.pdf
```

`mdls -name kMDItemPixelWidth -name kMDItemPixelHeight <file>` — Zeigt mehrere bestimmte Attribute.

```bash
mdls -name kMDItemPixelWidth -name kMDItemPixelHeight photo.png
```

`mdls -name kMDItemWhereFroms <file>` — Zeigt, woher eine Datei heruntergeladen wurde.

```bash
mdls -name kMDItemWhereFroms ~/Downloads/installer.pkg
```

`mdls -name kMDItemDurationSeconds <file>` — Zeigt die Dauer einer Audio-/Videodatei.

```bash
mdls -name kMDItemDurationSeconds song.mp3
```

## Spotlight-Index verwalten

`mdutil -s /` — Zeigt den Indexierungs-Status von Spotlight für ein Volume.

```bash
mdutil -s /
```

`mdutil -i on /` — Aktiviert die Spotlight-Indexierung für ein Volume.

```bash
sudo mdutil -i on /
```

`mdutil -i off <volume>` — Deaktiviert die Spotlight-Indexierung für ein Volume.

```bash
sudo mdutil -i off /Volumes/External
```

`mdutil -E /` — Löscht den Spotlight-Index und baut ihn neu auf.

```bash
sudo mdutil -E /
```

## Häufige Muster

`mdfind -name '.env' -onlyin ~/Projects` — Findet alle .env-Dateien in deinen Projekten.

```bash
mdfind -name '.env' -onlyin ~/Projects
```

`mdfind 'kMDItemContentType == "com.apple.application-bundle"' -onlyin /Applications` — Listet alle Anwendungen auf.

```bash
mdfind 'kMDItemContentType == "com.apple.application-bundle"' -onlyin /Applications
```

`mdfind -name '<filename>' | head -1 | xargs open` — Findet eine Datei und öffnet sie sofort.

```bash
mdfind -name 'readme.md' | head -1 | xargs open
```

`mdfind 'kMDItemFSCreationDate > $time.today(-1)' -onlyin ~/Downloads` — Findet heute heruntergeladene Dateien.

```bash
mdfind 'kMDItemFSCreationDate > $time.today(-1)' -onlyin ~/Downloads
```

<!-- PROSE:outro -->
## Fazit

`mdfind` ist auf indizierten Volumes fast immer die schnellere Wahl als `find`: Es fragt den fertigen Spotlight-Index ab, statt das Dateisystem zu durchwandern. Der wichtigste Vorbehalt: Gefunden wird nur, was auch indiziert ist – Systempfade, ausgeschlossene Ordner oder Volumes mit deaktivierter Indexierung tauchen nicht auf. Prüfe im Zweifel mit `mdutil -s` den Status und nutze `mdls`, um die `kMDItem`-Attribute einer Datei zu sehen, mit denen du deine Abfragen verfeinerst. Wer einmal verstanden hat, wie Spotlight Metadaten erhebt, ersetzt damit viele umständliche `find`-Konstruktionen durch eine einzige präzise Query.

## Weiterführende Links

- [mdfind – man-Page (Apple Developer)](https://developer.apple.com/library/archive/documentation/Darwin/Reference/ManPages/man1/mdfind.1.html) – offizielle Referenz zu Optionen und Abfrage-Syntax (englisch)
- [File Metadata Query Expression Syntax](https://developer.apple.com/documentation/coreservices/file_metadata/mditem/common_metadata_attribute_keys) – Übersicht der `kMDItem`-Attribute (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [caffeinate](https://www.jpkc.com/db/cheatsheets/macos/caffeinate/) – verhindert, dass der Mac in den Ruhezustand wechselt
- [defaults](https://www.jpkc.com/db/cheatsheets/macos/defaults/) – liest und schreibt macOS-Einstellungen (Preferences)
- [diskutil](https://www.jpkc.com/db/cheatsheets/macos/diskutil/) – verwaltet Festplatten, Partitionen und Volumes

