Suchen mit Linux
Je größer die Festplatten werden, desto schwieriger wird die Suche nach Daten. Aber es gibt Hilfe. Dieser Beitrag zeigt, welche Suchfunktionen Suse 10.1 zur Verfügung stellt - und wie Sie mit Beagle viele Suchprobleme lösen.
Beagle ist ein Daemon, der im Hintergrund alle Daten auf Ihrem PC indexiert und sie für eine Suche aufbereitet. Die Suche selbst führen Sie mit einem Frontend durch, das auf die von Beagle bereitgestellten Daten zugreift. Unter KDE heißt das Desktop-Programm Kerry Beagle. Es ist im Menü System unter Dateisystem zu finden. Wollen Sie ihre Suche lieber in der Kommandozeile durchführen, heißt das entsprechende Tool beagle-query.
Bei Suse 10.1 ist Beagle bereits Teil des Systems. Auch der für Beagle wichtige Kernel-Zusatz Inotify ist in Suse 10.1 aktiv. Allerdings ist Beagle beim ersten Aufrufen noch nicht einsatzbereit, da der Daemon zum Indexieren der Dateien nicht läuft. Diese Tatsache teilt Ihnen Kerry Beagle beim Start mit und bietet Ihnen an, Beagle mit einem Klick zu starten. Je nach dem, wie viele Daten sich auf Ihrem Rechner befinden, kann es eine Weile dauern, bis alle Dateien indexiert sind. Danach funktioniert die Suchfunktion von Kerry Beagle.
Von der Kommandozeile aus aktivieren Sie den Daemon mit beagled. Normalerweise ist nichts zu sehen, wenn Beagle arbeitet, da das Programm im Hintergrund läuft. Wollen Sie das ändern, holen Sie den Daemon in den Vordergrund. Zusätzlich sollten Sie die Statusmeldungen anschalten. Das dafür nötige Kommando lautet: beagled --fg --debug. Die Ausgaben in der Konsole verraten Ihnen, welche Dateien Beagle gerade untersucht und wann der Vorgang abgeschlossen ist.
Beagle listet nicht nur die Dateinamen auf, sondern auch den Inhalt von Textdateien, Mails und Office Dokumenten. Dazu kommen RSS-Feeds, Webseiten, die Sie angeschaut haben, sowie die Tags von Bildern, Musikdateien und Videos. Dabei arbeitet Beagle mit vielen der Standard-Programmen zusammen, etwa KMail, Open Office, Firefox und Konqueror.
Beagle einrichten
Soll Beagle nicht alles auf Ihrem Rechner indexieren, können Sie Teile der Daten ausschließen. Dafür verwenden Sie das Kommandozeilen-Tool beagle-config. Auf diesem Weg lassen sich Ordner mit samt ihren Unterordnern und Suchanfragen sperren. Um zu checken, was bisher von der Indizierung ausgeschlossen ist, geben Sie beagle-config indexing ListExcludes ein. Um ein neues Verzeichnis für Beagle zu sperren, verwenden Sie folgenden Befehl: beagle-config indexing AddExclude path und schreiben danach den Pfad des Ordners, der nicht indexiert werden soll. Ein Beispiel:
beagle-config indexing AddExclude path /home/hans/desktop
Um eine Suchanfrage zu sperren, hängen Sie an AddExclude den Parameter pattern und die Suchanfrage die Sie sperren möchten. Also zum Beispiel
beagle-config indexing AddExclude pattern test
Beagle indexiert dann das Suchwort test nicht mehr mit. Sie können dann auch nicht mehr danach suchen. Wollen Sie eine der gesetzten Ausnahmen wieder freigeben, verwenden Sie DelExclude statt AddExclude.
Mit Beagle suchen
Um die von Beagle indexierten Dateien zu durchsuchen, verwenden Sie entweder Kerry Beagle oder beagle-query in der Kommandozeile. Die Verarbeitung der Anfrage ist in beiden Fällen die gleiche. Kerry Beagle ist jedoch bequemer. Er spart Tipparbeit und öffnet die gefundenen Dateien per Klick auf die Ergebnisliste.
Bei Suchanfragen verwendet Beagle die von den Internetsuchmaschinen her bekannten Parameter. Solange Sie nichts anderes angeben, sucht Beagle Dokumente, die alle im Suchfeld angegebenen Wörter enthalten. Kommt es auf den genauen Wortlaut der Suchanfrage an, setzten Sie diese in Anführungszeichen. Die helfen Ihnen auch dann weiter, wenn die Groß- und Kleinschreibung eine Rolle spielt. Denn ohne die Gänsefüßchen ignoriert Beagle, ob ein Buchstabe großgeschrieben ist oder nicht.
Soll nur eines von den eingegebenen Wörtern vorkommen, setzen Sie OR zwischen die Begriffe. Soll ein Wort nicht vorkommen, markieren Sie es mit einem - direkt davor.
Für die Suche nach Dateien hat Beagle weitere Funktionen im Angebot. Mit Hilfe von Stichwörtern legen Sie fest, welche Eigenschaften die gesuchte Datei haben soll. Wenn Sie zum Beispiel ein File suchen, dessen Endung Sie kennen, fügen Sie Ihrer Suchanfrage ext: oder extension: hinzu. Hinter den Doppelpunkt schreiben Sie die Endung der Datei, zum Beispiel ext:pdf für ein PDF-Dokument. Beagle liefert dann nur Fundstellen, die sich in PDF-Dokumenten befinden.
Sind Sie auf der Suche nach einer Datei, die ein bestimmter Benutzer erzeugt hat, verwenden Sie das Stichwort author:. Um zu definieren, welche Wörter im Titel des Dokuments vorkommen sollen, verwenden Sie title:.
Sie können auch mehrere Stichwörter kombinieren. Fahnden Sie zum Beispiel nach einem Textdokument, das der Benutzer Hans erstellt hat und in dessen Namen nicht das Stichwort Jahresbericht vorkommt, sieht die Suchanfrage für Beagle so aus:
ext:odt author:hans title:-jahresbericht
Auch für Bilder hält Beagle eine Suchfunktion bereit: Verwalten Sie Ihr digitalen Fotos mit Digikam oder FSpot, sucht Beagle Ihnen Bilder mit einem bestimmten Tag heraus. Das Stichwort, das Sie dazu einsetzen heißt tag:.
Auf der Suche nach E-Mail
Beagle sucht auch in Mails. Das klappt bisher nur mit Evolution oder KMail, nicht aber mit Thunderbird. Suchen Sie eine Mail, bietet Beagle Stichwörter, um die Suche einzugrenzen. Wissen Sie zum Beispiel, von wem Sie die gesuchte Mail erhalten haben, verwenden Sie Mailfrom: und den Namen des Absenders. Alternativ funktioniert auch mailfromaddr: kombiniert mit der E-Mail-Adresse. Geht es um eine Mail, die Sie verschickt haben, verwenden Sie mailtoaddr: oder mailto:.
Wollen Sie verhindern, dass ein Mailordner mit indexiert wird, zum Beispiel der Spam-Ordner, schließen Sie ihn aus mit:
beagle-config indexing AddExclude mailfolder Spam
Hinter mailfolder steht der Name des Ordners, den Sie ausschließen wollen.
Suche auf der Kommandozeile mit find
Das Suchwerkzeug unter Linux schlechthin heißt find. Hierbei handelt es sich um ein ebenso mächtiges wie schwer zu bedienendes Kommandozeilenprogramm. Um eine Datei zu suchen, geben Sie ein:
find /ausgangsverzeichnis -name 'filename'
Statt ausgangsverzeichnis schreiben Sie den Ordner, an dem die Suche beginnen soll. Möchten Sie den kompletten Verzeichnisbaum durchsuchen, schreiben Sie
find / -name 'filename'
Aber Achtung: Die Suche kann sich eine Weile hinziehen. Und falls Sie wirklich alle Verzeichnisse durchsuchen wollen, brauchen Sie die entsprechenden Rechte. Mit root kommen Sie an alle Ordner.
Um alle Verzeichnisse, ausgehend vom aktuellen Ordner zu durchsuchen, verwenden Sie
find . -name 'filename'
Natürlich dürfen Sie auch jeden anderen Pfad angeben.
Spannend sind die weiteren Parameter von find. Um zum Beispiel nur Dateien oder nur Verzeichnisse aufzuspüren verwenden Sie den Parameter type. Für Dateien:
find . -name 'filename' -type f
und für Ordner:
find . -name 'filename' -type d
Bei den Namen dürfen Sie auch mit Wildcards arbeiten, Platzhaltern für Teile des Dateinamens. Um alle txt-Dateien zu finden, verwenden Sie zum Beispiel
find . -name '*.txt' -type f
Schneller suchen mit locate
Für die schnelle Suche nach einem File reicht auch das einfach zu bedienende Kommandozeilenprogramm locate. Das durchsucht von der Kommandozeile aus eine Indexdatei mit allen Dateinamen und -Pfaden. Die Bedienung ist simpel:
locate dateiname
Locate müssen Sie in Suse 10.1 nachinstallieren. Starten Sie Yast und wählen Sie dort Software - Software installieren oder löschen. Suchen Sie nach findutils und installieren Sie findutils-locate aus der Liste der Suchergebnisse.
Nach der Installation des Suchhelfers öffnen Sie eine Shell und melden sich als Benutzer root an. Geben Sie dann den Befehl
updatedb
ein, um die vorhandenen Dateien einzulesen. Ist das Indexieren der Dateien erledigt, können Sie mit der Suche loslegen.
Nachteil von locate: Inhalte von Dateien finden hier keine Beachtung.
Gründlich suchen mit grep
Bislang finden die beschriebenen Tools nur Dateien anhand ihrer Namen. Was aber, wenn es um einen Text innerhalb eines Files geht? Da hilft grep. Um zum Beispiel in einem Ordner alles Dateien zu ermitteln, die das Wort "Linux" enthalten, schreiben Sie auf der Kommandozeile
grep 'Linux' *
Das Sternchen steht hier für alle Dateien. Entsprechend dürfen Sie natürlich auch andere Muster eingeben, etwa für alle Textdateien mit der Endung txt:
grep -r 'Linux' *.txt
Das bei der Gelegenheit mit hineingeschmuggelte -r durchsucht gleich noch alle Unterverzeichnisse mit.
Als Ergebnis bekommen Sie eine Liste von Fundstellen. Die besteht in jeder Zeile aus dem Namen des Dokuments sowie der Zeile, in der ein Suchbegriff vorkommt. Soll es etwas übersichtlicher sein, gibt grep auch nur den Dateinamen aus. Dazu verwenden Sie zusätzlich den Parameter l:
grep -rl 'Linux' *.txt
Und wenn Sie alle Text-Dateien suchen wollen, in denen das Wort "Linux" nicht vorkommt? Dann kehren Sie die Suche um, mit Hilfe des Parameters -v:
grep -rlv 'Linux' *.txt
Aber Achtung: Die Ergebnisliste kann ausgesprochen lang werden.
Für die Suche in den Dateien dürfen Sie auch Reguläre Ausdrücke verwenden. Möchten Sie zum Beispiel alle Dateien finden, in denen "Linux" genau am Anfang einer Zeile steht, geben Sie ein:
grep -Er '^Linux' *.txt
Das -E schaltet die Verarbeitung von Regulären Ausdrücken ein. Im Suchbegriff hat sich nur ein Detail geändert: vor dem Begriff steht ein Dächlein ^. Das steht für den Zeilenanfang. Grep sieht also nach, wo direkt auf den Zeilenanfang das Suchwort Linux folgt.
Interaktiv suchen mit dem Midnight Commander
Ein Zwischending zwischen Kommandozeile und grafischer Oberfläche ist der Midnight-Commander, den Sie von der Linux-Shell mit mc starten. Das Tool zeigt den Inhalt zweier Verzeichnisse nebeneinander an und erleichtert so Arbeiten wie das Kopiern, Löschen und Ansehen von Dateien.
Darüber hinaus hat der Commander eine Suchfunktion an Bord. Die erreichen Sie mit einem Tastendruck auf F9 im Menü Befehl - Datei suchen. Es erscheint eine kleine Dialogbox. In die erste Zeile Anfangen bei tragen Sie den Ordner ein, von dem aus die Suche starten soll, zum Beispiel also /home. Die zweite Zeile Dateiname nimmt ein Suchmuster für den Filenamen auf. Zusätzlich durchsucht der Commander auch die Dateien selbst. Wonach, das geben Sie in der dritten Zeile Inhalt ein. Danach macht sich der Commander mit Ok auf die Suche nach den Dateien und präsentiert das Ergebnis als Liste. Die gefundenen Dateien sehen Sie sich mit F3 an. Haben Sie auch nach Inhalten in den Dateien recherchiert, springt der Midnight Commander in der anzusehenden Datei gleich in die richtige Zeile.
Suchen in KDE
Neben Beagle hat KDE noch eine klassische Suchfunktion an Bord. Die finden Sie unter Dateien suchen im KDE-Menü. Im Suchfenster geben Sie als Name den Dateinamen ein. Dabei sind * als Platzhalter für beliebig viele Zeichen und ? für ein beliebiges Zeichen erlaubt. Den Startordner tragen Sie darunter in Suchen in ein. Ein Klick auf Auswählen hilft, den Ausgangsordner zu finden. Bereits aktiv ist die Option Einschließlich Unterordner. Mit einem Klick auf Suchen geht es los. Achten Sie auch hier darauf, dass Sie die Suchbegriffe nicht zu weit fassen und den richtigen Anfangsordner wählen, sonst erhalten Sie unnötig viele Suchergebnisse.

Bordwerkzeug: Die KDE-Suchfunktion findet Dateien und deren Inhalt.
Möchten Sie innerhalb der Dateien nach Text suchen, klicken Sie auf Inhalt und geben unter Enthaltener Text den Suchbegriff ein. Danach legen Sie mit Suchen los. Praktisch: Speichern unter speichert die Fundstellen in einer Textdatei.
Beagle als Root ausführen
In der Standardeinstellung funktioniert Beagle nicht, solange Sie als Root angemeldet sind. Denn der Beagle-Daemon arbeitet normalerweise mit den Berechtigungen des Benutzers, der gerade angemeldet ist. So indexiert der Daemon auch nur dessen Home-Verzeichnis. Zwar haben Sie Option, von Hand weitere Verzeichnisse hinzufügen, das ist aber mühsam. Soll Beagle als root alle Verzeichnisse auf dem Computer indexieren, geben Sie in der Kommandozeile
beagle-config daemon ToggleAllowRoot
ein. Danach erhalten Sie die Meldung Beagle is now permitted to run as root.
Schneller indexieren
Beagle indexiert normalerweise im Hintergrund und beansprucht daher nur einen kleinen Teil der Ressourcen. Außerdem startet der Indexierungsvorgang nicht sofort, sondern erst fünf Minuten nach dem Start von Beagle. Um diese Verzögerung zu verkürzen geben Sie in der Kommandozeile folgendes ein:
beagled --indexing-delay
und dahinter die Zahl der Sekunden, die zwischen dem Start von Beagle und dem crawlen liegen sollen. Also etwa
beagled --indexing-delay 10
für eine Verzögerung von zehn Sekunden.
Um die Indexierung selbst zu beschleunigen, setzen Sie eine Umgebungsvariable namens BEAGLE_EXERCISE_THE_DOG. Dazu tippen Sie folgendes in der Kommandozeile ein:
export BEAGLE_EXERCISE_THE_DOG=1
Danach läuft Beagle mit Volldampf und indexiert alle Dateien so schnell wie möglich.
Bedingungen fuer die Kommentareingabe
Hinweis

Facebook
Del.icio.us
Twitter

