So suchen Sie Dateien vom Terminal aus unter Linux
Während es viele Möglichkeiten gibt, mit denen wir Dateien und Verzeichnisse unter Linux suchen und finden können, ist die einfachste und schnellste wahrscheinlich über das Terminal. Allerdings wissen nicht viele Linux-Anwender davon, was zu unnötiger Frustration führt. Hier ist eine Kurzanleitung, die Ihnen hoffentlich helfen wird, das zu finden, wonach Sie in Ihrem System suchen.
Verwenden Sie den Befehl Locate.
Der Befehl “ locate„ ist der erste Ausweg, den ein Linux-Benutzer nutzen sollte, weil er viel schneller ist als alles andere da draußen. Der Grund für diese unübertroffene Geschwindigkeit ist, dass der locate-Befehl nicht wirklich Ihre lokalen Festplatten nach den Dateien oder Verzeichnissen durchsucht, die Sie finden müssen, sondern eher das Lesen durch die mlocate.db-Datenbankdatei, die alle Dateipfade in Ihrem System enthält.
Wenn Sie locate noch nicht installiert haben, verwenden Sie diese Befehle:
Debian und Ubuntu
sudo apt-get install locate
CentOS
yum install locate
Bereiten Sie den locate Befehl für die erste Verwendung vor.
Um die mlocate.db-Datenbank vor der ersten Verwendung zu aktualisieren, führen Sie aus:
sudo updatedb
Um locate zu verwenden, öffnen Sie ein Terminal und geben Sie locate gefolgt von dem gesuchten Dateinamen ein. In diesem Beispiel suche ich nach Dateien, die das Wort „sunny“ in ihrem Namen enthalten.
locate sunny
Locate kann Ihnen auch anzeigen, wie oft ein Suchbegriff in der Datenbank gefunden wird. Dies wird durch die Aufnahme eines Parameters „-c“ in den Befehl erreicht, der für „count“ steht.
locate -c sunny
Was Benutzer hier beachten müssen, ist, dass „locate“ im Gegensatz zu anderen flexibleren Tools den spezifischen und genauen Namen der gesuchten Datei benötigt. Das bedeutet, dass locate ideal ist, um etwas zu finden, bei dem Sie sich über den Namen sicher sind, aber nicht so gut, wenn Sie sich nicht genau an den Dateinamen erinnern.
locate howtoforge
vs
locate Howtoforge
Außerdem, und da “ locate „ eine Datenbankdatei liest, können die Ergebnisse veraltet und nicht vollständig wahr sein. Um dieses Problem zu beheben, können Sie Ihre Dateipfad-Datenbank aktualisieren, indem Sie “ sudo updatedb“ in einer Terminalsitzung eingeben.
Weitere Beispiele für die Verwendung des Befehls locate finden Sie hier.
Wenn Sie danach immer noch nicht das bekommen, wonach Sie gesucht haben, oder wenn Sie einfach von der Anzahl der Ergebnisse überwältigt sind, fahren Sie mit dem nächsten Schritt fort, dem Befehl „find“.
Verwenden Sie den Befehl Find
Der Befehl „find“ ist ein viel mächtigeres, aber auch langsameres Suchprogramm. Dies liegt daran, dass im Gegensatz zum Befehl „locate“ „find“ Ihre Festplatten tatsächlich nach den Dateien und Verzeichnissen durchsucht, die der Benutzer sucht. Find ist perfekt für den Fall, dass Sie versuchen, eine Datei oder ein Verzeichnis zu finden, sich aber nicht an den Namen erinnern können, denn „find“ kann nach Dateien suchen, die zu einem bestimmten Benutzer oder einer bestimmten Gruppe von Benutzern gehören, nach Dateien, die kürzlich geändert oder darauf zugegriffen wurde, nach Dateien mit einer bestimmten Größe, versteckten Dateien, ausführbaren Dateien, schreibgeschützten Dateien und Dateien mit bestimmten Berechtigungen. Der beste Teil ist, dass es einem Benutzer freisteht, mehrere der oben genannten Kriterien in einem „find“-Befehl zu kombinieren, wodurch die Ergebnisse im Wesentlichen eingeschränkt werden.
Apropos Eingrenzung, das erste, was Sie tun wollen, wenn Sie „find“ ausführen, ist, ihm zu sagen, dass er in einem bestimmten Verzeichnis suchen soll. Dies beschleunigt den Suchvorgang erheblich, jedoch immer abhängig von der Größe des Verzeichnisses. Wenn Sie wissen, wo sich die Datei befindet, öffnen Sie das Terminal, navigieren Sie zum Verzeichnis und führen Sie “ find . (Dateiname)“. Dieser Punkt weist find an, im aktuellen Verzeichnis zu suchen. Wenn Sie stattdessen in Ihrem Home-Verzeichnis suchen möchten, ersetzen Sie den Punkt durch „~/“, und wenn Sie Ihr ganzes Dateisystem durchsuchen möchten, verwenden Sie stattdessen „/“.
Als Beispiel möchte ich nach einer Datei suchen, die ein Poster in meinem Downloadverzeichnis enthält. Ich weiß, dass der Dateiname das Wort „Poster“ enthält, aber ich erinnere mich nicht genau an den Namen. Aus diesem Grund würde ich mit „cd Downloads“ zu meinem Download-Ordner durch das Terminal navigieren und dann den Befehl eingeben:
sudo find . -name "*poster*"
Hier ist das Ergebnis:
Dies sagt mir, dass es im Ordner Downloads eine pdf-Datei mit dem Namen „billy_poster copy“ gibt. Wenn ich nicht wüsste, wo es sich befindet, würde „find“ mich trotzdem wissen lassen, dass es sich im Ordner Downloads befindet, wenn ich in einem übergeordneten Verzeichnis gesucht habe.
Wenn ich nun den Parameter „-name“ durch „-iname“ ersetze, könnte ich Ergebnisse ohne Rücksicht auf die Groß-/Kleinschreibung erhalten. Das ist etwas, das es in „locate“ nicht gibt, also ein weiteres hilfreiches Element, wenn Sie sich über den Dateinamen nicht sicher sind.
sudo find . -iname "*poster*"
Nun, nehmen wir an, dass ich immer noch nach der gleichen Posterdatei suche, und das Einzige, woran ich mich erinnere, ist, dass sie weniger als 5 MB groß ist. Der Befehl, den ich in diesem Fall verwenden würde, ist:
find ~/ -size -5M
Wenn ich wüsste, dass es höher ist als 2MB, wäre der Befehl „find ~/ -size +2M“. Der beste Teil ist, dass find boolesche Operatoren unterstützt, um die Suche noch stärker zu machen. Für dieses Beispiel werde ich einen Befehl verwenden, der mein Wissen kombiniert, dass die Datei weniger als 5 Megabyte groß ist und auch mehr als 2, den Befehl dazu:
find / -size -5M -and -size +2M
Zuletzt schlagen wir vor, dass wir uns an nichts über die Datei erinnern, aber wir erinnern uns daran, dass wir innerhalb von drei Minuten darauf zugegriffen haben. Um sie zu finden, verwenden Sie den Befehl find as:
find / -amin -3
Dies wäre „find / -amin -30“ für eine halbe Stunde, und „-amin -120“ für zwei Stunden usw. Wenn Sie vor zwei Tagen auf die Datei zugegriffen haben, verwenden Sie diese stattdessen:
find / -time -2
Dadurch werden alle Dateien, auf die in den letzten zwei Tagen zugegriffen wurde, am Ort der Suche angezeigt.
Ich denke, dass das oben genannte die meisten der üblichen Use-Case-Szenarien abdeckt. Für weitere Informationen über den leistungsstarken Befehl „find“ öffnen Sie ein Terminal und geben Sie „man find“ ein. Viel Glück bei der Suche nach dem, was Sie suchen.
Weitere Beispiele für den Linux Befehl find find finden Sie hier.