Spürnasen

Dateisuche mit find und locate

01.05.2005
Für jeden Zweck das Richtige: Die Suchwerkzeuge find und locate arbeiten Hand in Hand, which und whereis helfen bei besonderen Aufgaben.

Chaotische Zustände beherrschen viele Home-Verzeichnisse. Im selbst für deren Schöpfer meist kaum noch nachvollziehbaren Wirrwarr verstrickter Verzeichnisstrukturen eine bestimmte Datei zu finden erfordert mehr als einen Dateimanager. Das klassische Unix-Werkzeug zu diesem Zweck heißt find. Es fahndet nicht nur nach namentlich bekannten Dateien, sondern berücksichtigt darüber hinaus Kriterien wie Zugriffszeiten oder Berechtigungen. Assistiert wird find vom schnellen locate und den spezialisierten Werkzeugen which und whereis.

Spürhund ohne Erbarmen

Als Parameter verlangt der find-Befehl den Namen des zu durchsuchenden Verzeichnisses gefolgt von den Suchbedingungen:

find /home/user -name datei.txt

Als Suchbedingungen kennt find Dateinamen, -größe und -typ, Zugriffsrechte und Besitzer sowie Datum der letzten Veränderung und des letzten Zugriffs. Diese Kriterien lassen sich beliebig kombinieren.

Suchen Sie eine Datei mit einem bestimmten Namen unterhalb eines Verzeichnisses, benötigen Sie nur den Parameter -name:

find . -name index.tex

Dieses Kommando unterscheidet Linux-typisch zwischen Groß- und Kleinschreibung. Obiges Beispiel wird also eine Datei Index.tex nicht als Treffer werten. Dieses Verhalten heben Sie auf, indem Sie statt -name den Parameter -iname verwenden:

find /usr/local/ -iname index.tex

Dieser Aufruf findet sowohl die Dateien index.tex als auch INDEX.tex oder InDeX.tex unterhalb von /usr/local/. Wildcards helfen beim Aufspüren von Dateien mit ähnlichen Namen (Kasten 1):

find . -name index*

Kasten 1: Wildcards

Einige Sonderzeichen fungieren als Platzhalter für andere Ziffern oder Buchstaben. So steht das Fragezeichen für genau ein beliebiges Zeichen; index.te? trifft beispielsweise für index.tex oder index.te3 zu, nicht aber für index.tex3.

Eine beliebige Anzahl von Zeichen repräsentiert der Stern (engl.: "asterisk"). Der Ausdruck *tex liefert alle Dateien zurück, die auf tex enden, also sowohl index.tex als auch nur tex.

Buchstaben- oder Ziffernbereiche decken Sie mit Hilfe eckiger Klammern ab: Der Ausdruck [abd] steht für die Kleinbuchstaben a, b und d. Den Bereich von a bis d im Alphabet repräsentiert [a-d]. Analog funktioniert dies mit Ziffern, beispielsweise von 4 bis 8: [4-8].

Um find nach Dateien mit einer bestimmten Dateigröße suchen zu lassen, existiert die Suchbedingung -size. Standardmäßig bezieht sich der Wert der darauf folgenden Angabe auf die Anzahl der von der Datei belegten Blöcke im Dateisystem, die üblicherweise 512 Byte groß sind. Jedoch lassen sich auch alltäglichere Einheiten wie Byte und KByte verwenden. Hängen Sie dazu c bzw. k an die Dateigröße an. Bei einem vorangestellten + oder - sucht find nicht nur Dateien mit exakt der angegebenen Größe, sondern verwendet diese Zahl als Minimal- bzw. Maximalwert:

find . -size +100k -name dokument.ps

Dieser Befehl gibt alle Dateien des Namens dokument.ps unterhalb des aktuellen Verzeichnisses aus, wenn sie mindestens 100 KBytes groß sind. Die weiteren Suchfunktionen folgen demselben Prinzip (Tabelle 1).

Tabelle 1: Suchbedingungen von Find

-name dateiname Sucht Dateien des Namens dateiname.
-iname dateiname Sucht nach dateiname und ignoriert Groß- und Kleinschreibung.
-size [+-]groesse[ck] Sucht Dateien, die größer oder kleiner als groesse sind. c steht für Byte- und k für KByte-Werte. Ohne Einheitsangabe wird nach der Anzahl der belegten Blöcke (512 Byte) gesucht.
-type [fdl] Sucht Dateien eines bestimmten Typs: f für einfache Dateien, d für Verzeichnisse und l für symbolische Links.
-atime [+-]zeit Sucht Dateien, auf die seit mehr oder weniger als zeit Tagen nicht mehr zugegriffen wurde.
-amin [+-]zeit Sucht Dateien, auf die seit mehr oder weniger als zeit Minuten nicht mehr zugegriffen wurde.
-mtime [+-]zeit Sucht Dateien, die seit mehr oder weniger als zeit Tagen nicht mehr verändert wurden.
-mmin [+-]zeit Sucht Dateien, die seit mehr oder weniger als zeit Minuten nicht mehr verändert wurden.
-perm 0000 Sucht Dateien mit den den Zugriffsrechten 0000 (Oktalzahl).
-user benutzername Sucht Dateien des Benutzers benutzername.
-exec befehl "{}" ";" Führt befehl mit den gefunden Dateien als Parameter aus. Die geschweiften Klammern stehen für den aktuell gefunden Dateinamen.
-ok befehl "{}" ";" Führt befehl nach Rückfrage aus.

Gefunde Dateien ausführen

Als Werkzeug mit fast unbegrenzten Möglichkeite entpuppt sich find, wenn es Dateien nicht nur sucht, sondern mit den Treffern direkt beliebige Befehle ausführt. Diesen Zweck erfüllt der Parameter -exec zusammen mit den geschweiften Klammern {} und dem Semikolon (;). Der Ausdruck {} steht dabei für jede gefundene Datei, das Semikolon schließt einen Befehl ab und darf daher am Ende des -exec-Aufrufs nicht fehlen. Beide müssen jeweils zwischen Anführungszeichen stehen, damit die Shell sie als find-eigene Parameter erkennt.

Ebenso wie -exec funktioniert der Aufruf der Alternative -ok. Der Unterschied besteht darin, dass find mit --ok bei jeder Aktion vor dem Ausführen um Bestätigung bittet. Dieser Parameter empfiehlt sich also bei eventuell destruktiven Aktionen wie dem Löschen oder Verschieben von Dateien.

Die folgende Anweisung sucht alle Dateien unterhalb des aktuellen Verzeichnisses, die auf .txt enden, dem Benutzer namens bauni gehören und höchstens sieben Tage alt sind. Den Inhalt der gefundenen Dateien gibt nach Rückfrage der Befehl cat nacheinander auf der Kommandozeile aus.

find . -name "*.txt" -user bauni -atime -7 -ok cat "{}" ";"

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Suchen im Dateisystem
    Mehr als hunderttausend Dateien liegen in einem gut ausgestatteten Linux-System. Im eigene Home-Verzeichnis tummeln sich oft nicht weniger. Diverse Tools zur Dateisuche helfen, sich im Datendschungel zurecht zu finden.
  • Zu Befehl
    Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, wo es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.
  • Suchmaschinenübergreifendes Frontend Catfish
    Statt sich auf der Suche nach der gewünschten Information mühsam durch die Datenberge zu wühlen, verwenden Sie einfach Catfish – und sind so nur einen Klick vom Resultat entfernt.
  • Dateien finden leicht gemacht mit den richtigen Tools
    Wie in den letzten Heften wollen wir Ihnen auch in dieser Ausgabe beim Umstieg von Windows auf Linux helfen. Viele Anwender haben sich bereits unter Windows ein fundiertes Wissen angeeignet und wollen unter Linux nicht mehr bei Null anfangen. Diesmal stellen wir Ihnen die verschiedenen Dateisuchprograme vor.
  • out of the box: linklint
    Tote Links in Web-Seiten werfen ein schlechtes Licht auf die Betreiber eines Internet-Auftritts. Doch wer macht sich gern die Arbeit, die internen und externen Links händisch zu überprüfen? Sie nicht? Dann sollten Sie sich linklint ansehen.
Kommentare

Infos zur Publikation

title_2014_09

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...
Öhm - wozu Benutzername, wenn man dann hier mit Klarnamen angezeigt wird?
Thomas Kallay, 03.07.2014 20:30, 1 Antworten
Hallo Team von Linux-Community, kleine Zwischenfrage: warum muß man beim Registrieren einen Us...