Home / LinuxUser / 2005 / 05 / Dateisuche mit find und locate

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Spürnasen

Dateisuche mit find und locate

01.05.2005 Für jeden Zweck das Richtige: Die Suchwerkzeuge <C>find<C> und <C>locate<C> arbeiten Hand in Hand, <C>which<C> und <C>whereis<C> 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 "{}" ";"
Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

2542 Hits
Wertung: 69 Punkte (1 Stimme)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...