Viele Ubuntu-Benutzer werden mit dem Tool „Search for Files“ vertraut sein, mit dem man nach Dateien suchen kann. Wie bei den meisten Dingen in Linux gibt es großartige Desktop-Tools, aber das Terminal ist leistungsfähiger als jedes stromlinienförmige Desktop-Tool.
Heute möchte ich Ihnen ein paar Tools vorstellen, die das lästige Suchen von Dateien zu einem einfachen Prozess machen können.
locate
Das erste Tool, mit dem Sie sich vertraut machen sollten, ist auch eines der einfachsten. Das Programm locate
funktioniert ähnlich wie die meisten grafischen Suchwerkzeuge.
Benutzen
Angenommen, Sie haben nachgelesen, wie Sie X modifizieren können, um eine bessere Videoleistung zu erzielen. In dem Dokument, das Sie lesen, steht, dass Sie die Datei xorg.conf
ändern sollen, aber das Dokument sagt nicht, wo diese Datei ist, und Sie wissen nicht, wie Sie sie finden können. Sie können locate
verwenden, um sie schnell zu finden:
$ locate xorg.conf/etc/X11/xorg.conf/usr/share/man/man5/xorg.conf.5.gz/var/lib/x11/xorg.conf.md5sum/var/lib/x11/xorg.conf.roster
Es ist klar, dass /etc/X11/xorg.conf
die gesuchte Datei ist, aber was wäre, wenn Dutzende oder sogar Hunderte von Ergebnissen zurückgegeben würden? Wie könnten Sie das alles bewältigen? Wenn Sie sich ein wenig mit regulären Ausdrücken auskennen (jeder Linux-Benutzer sollte wirklich die Grundlagen lernen), können Sie ganz einfach reguläre Ausdrücke verwenden, um nach Verzeichnissen oder Dateien zu suchen. Zum Beispiel können wir mit dem folgenden Befehl nach einer exakten Übereinstimmung für xorg.conf
suchen:
$ locate -r '/xorg.conf$'/etc/X11/xorg.conf
Wenn Sie nach Dateien ohne Unterscheidung zwischen Groß- und Kleinschreibung suchen möchten, können Sie die Option -i
verwenden. Beispiel:
$ locate -i 'monthly report'/home/chris/Documents/August Monthly Report.doc/home/chris/Documents/July Monthly Report.doc/home/chris/Downloads/latest monthly report.doc
Was Sie bei der ersten Verwendung von locate
vielleicht verwirrt, ist die Tatsache, dass nicht nur Übereinstimmungen zurückgegeben werden, sondern, wenn die Übereinstimmung ein Verzeichnis ist, auch alle Verzeichnisse und Dateien unter diesem Verzeichnis aufgelistet werden. Zum Beispiel:
$ locate Desktop/home/chris/Desktop/home/chris/Desktop/Head Shot.jpg/home/chris/Desktop/Skype.lnk/home/chris/Desktop/Steam.lnk...
Dieser Befehl liefert auf meinem System mehr als tausend Einträge. Um die Ergebnisse auf eine Liste von Einträgen zu reduzieren, die mit dem Suchbegriff übereinstimmen, ohne alle enthaltenen Dateien und Verzeichnisse, verwenden Sie die Option -b
:
$ locate -b Desktop/home/chris/Desktop/home/chris/bin/recordSoundAndDesktop.sh/opt/HipChat4/lib/QtQuick/Controls/Styles/Desktop/usr/include/qt4/QtGui/QDesktopServices/usr/include/qt4/QtGui/QDesktopWidget/usr/lib/libreoffice/program/wizards/common/Desktop.py/usr/lib/libreoffice/share/gallery/computers/Computer-Desktop.png/usr/lib/python2.7/dist-packages/xdg/DesktopEntry.py/usr/lib/python2.7/dist-packages/xdg/DesktopEntry.pyc/usr/lib/python3/dist-packages/xdg/DesktopEntry.py/usr/lib/python3/dist-packages/xdg/__pycache__/DesktopEntry.cpython-35.pyc/usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Styles/Desktop/usr/share/kde4/apps/kio_desktop/DesktopLinks/usr/share/man/man3/File::DesktopEntry.3pm.gz/usr/share/perl5/File/DesktopEntry.pm/usr/share/sounds/KDE-Window-All-Desktops-Not.ogg/usr/share/sounds/KDE-Window-All-Desktops.ogg
Es gibt immer noch eine ganze Reihe von Übereinstimmungen, aber wir müssen uns nicht mehr durch all die zusätzlichen Ergebnisse sortieren, um zu finden, wonach wir suchen.
Wichtiger Hinweis
Der Befehl locate
stützt sich auf eine Slocate-Datenbank, um zu funktionieren. Diese Datenbank speichert die Verzeichnis- und Dateinamen des Dateisystems und ermöglicht es dem locate
-Befehl, in wenigen Augenblicken zu arbeiten, anstatt lange Zeit zu brauchen, um das gesamte Dateisystem zu durchsuchen.
Diese Fähigkeit kommt jedoch nicht ohne Kosten. Standardmäßig führt Ihr System einmal täglich um 6:25 Uhr einen Befehl zur Aktualisierung dieser Datenbank aus. Dieser Befehl aktualisiert die Datenbank mit allen Änderungen, die seit der letzten Aktualisierung am Dateisystem vorgenommen wurden.
Wenn Sie in letzter Zeit Änderungen vorgenommen haben, z. B. große Mengen an Dateien und Verzeichnissen hinzugefügt oder entfernt haben, und Sie den Befehl locate
verwenden möchten, um diese neuen Verzeichnisse und Dateien zu durchsuchen, können Sie die Slocate-Datenbank jederzeit mit folgendem Befehl manuell aktualisieren:
$ sudo updatedb
Abhängig von der Menge der Änderungen, die seit der letzten Aktualisierung der Slocate-Datenbank vorgenommen wurden, kann die Aktualisierung einige Sekunden bis einige Minuten dauern. Danach können Sie die Suche mit locate
.
fortsetzen, was
locate
für die Suche im gesamten Dateisystem sehr gut geeignet ist. Manchmal möchte man jedoch nur herausfinden, wo sich ein Befehl befindet. Hier kommt which
ins Spiel.
which
macht nur eine Sache, aber sie macht es gut. Es gibt den Namen eines Befehls an und sagt Ihnen, wo sich die Datei für diesen Befehl im Dateisystem befindet.
Stellen wir uns vor, wir wollen herausfinden, wo sich der Befehl firefox
befindet. Wir können einfach folgendes ausführen, um es herauszufinden:
$ which firefox/usr/bin/firefox
Warum sollten Sie überhaupt speziell nach einem Befehl suchen wollen? Stellen Sie sich vor, Sie haben einen Code, der einen alten Befehl ersetzen soll. Sie müssen zuerst den alten Befehl entfernen (ich benenne ihn normalerweise in denselben Namen um, gefolgt von „.bak“, um ihn für den Fall aufzubewahren, dass ich ihn brauche), bevor Sie den neuen Befehl an seine Stelle setzen. which
hilft Ihnen, die Datei schnell und einfach zu finden, so dass Sie nicht überall danach suchen müssen.
whereis
Der Befehl whereis
ist ähnlich wie der Befehl what, geht aber einen Schritt weiter. Er sagt Ihnen nicht nur, wo sich die ausführbare Datei befindet, sondern findet auch den Quellcode, die Manpage und andere zugehörige Verzeichnisse.
Wenn wir beim which
-Beispiel bleiben, fragen wir whereis
nach dem firefox
-Befehl:
$ whereis firefoxfirefox: /usr/bin/firefox /usr/lib/firefox /etc/firefox /usr/share/man/man1/firefox.1.gz
Dies hat mir geholfen, /usr/lib/firefox/plugins
zu finden, als ich an der Lösung für Flash gearbeitet habe, da dort die globalen Add-ons für Firefox gespeichert sind.
find
find
ist das ultimative Suchwerkzeug, das Schweizer Taschenmesser der Linux-Suche, wenn man so will. find
kann alles, von der Suche nach Dateien basierend auf der letzten Änderungszeit, Eigentümern und Gruppen, Berechtigungen, Typ (Datei, Verzeichnis, symbolischer Link usw.), ob die Datei für den aktuellen Benutzer lesbar/schreibbar/ausführbar ist, Dateigröße, ob die Datei oder das Verzeichnis leer ist, und vieles mehr. Sie können auch nach Übereinstimmungen mit regulären Ausdrücken suchen.
Wenn Sie dieses Tool in Kombination mit dem xargs
-Befehl verwenden (den ich ein anderes Mal behandeln werde), können Sie in der Befehlszeile wirklich erstaunliche Dinge tun. Stellen Sie sich vor, Sie könnten das aktuelle Verzeichnis rekursiv nach Dateien mit der Endung „.bak“ durchsuchen, die vor mehr als 100 Tagen zuletzt geändert wurden, und diese dann mit einem einzigen Befehl löschen:
$ find . -name '*.bak' -type f -mtime +100 -print0 | xargs -0 /bin/rm -f
Es sieht zunächst sehr kompliziert aus, aber wenn Sie die Kunst der Verwendung von find
beherrschen, wird es Ihnen zur zweiten Natur. Bald werden Sie sich fragen, wie Sie jemals ohne diesen Befehl nach Dingen gesucht haben.
Um ehrlich zu sein, gibt es viel mehr zu finden, als ich bereit bin, zu behandeln, und es gibt viele, viele großartige Einführungen in das Werkzeug, die eine bessere Arbeit leisten als ich es tun würde. Also werde ich Sie einfach auf drei großartige Referenzen verweisen, die verwendet werden können, um mit find loszulegen.
- Beispiele für die Verwendung des Linux-Befehls find
- (Ich entschuldige mich im Voraus für die schrecklichen Farben) Unix/Linux „find“ Command Tutorial
- Using the find command
Happy searching.
Habe ich Ihnen geholfen?
- Senden Sie mir ein Trinkgeld per Paypal.
- Hilfe für das Hosting dieser Seite mit meinem Linode Empfehlungscode.