Wie suche ich mit Linux nach Dateien?

19696
Niklas Rosencrantz

Kennen Sie einen guten Weg, um eine Datei oder einen Inhalt anhand des Namens rekursiv zu finden, ähnlich wie bei der ms-windows-Funktionssuche unter Linux? Ich kann den find . | grep test.htmlVerdacht haben, dass es nicht das Beste ist. Danke für jede Antwort.

Zum Beispiel führt das Laufen zu find . | grep terms.htmlmeinem erwarteten Ergebnis, während locate terms.htmllocate nicht mit db aktualisiert wird. Dies kann mit einem USB-Stick zusammenhängen, auf dem sich die Datei befindet.

3

8 Antworten auf die Frage

13
rapadura

Der Befehl lautet wie folgt

 find . -iname '*hellofiles*' 

Sie sagen, find · location · -iname bedeutet nicht zwischen Groß- und Kleinschreibung zu unterscheiden und in '' ist ein regulärer Ausdruck, wenn Sie möchten.

find / home / user -iname '* zip' findet alle ZIP-Dateien in / home / user

Wenn Sie eine schnellere Suche wünschen, können Sie locate verwenden. Es gibt ein Dienstprogramm, das die Disc regelmäßig scannt, wie jede Woche oder jeden Tag, je nachdem, wie sie eingerichtet ist

locate myfile 

Es wird in der Datenbank gesucht, wenn updateb irgendwo meine Datei gesehen hat.

Das hat mir mehrmals geholfen als zu lokalisieren Niklas Rosencrantz vor 12 Jahren 0
2
andymnc

Im Falle von Paketen: dpkg -L Paketname

oder wenn Sie wissen, dass es sich in einem bestimmten Ordner befindet, fügen Sie die Verwendung von grep hinzu:

dpkg -L Paketname | grep Ordnername

Sie haben zum Beispiel gerade Chromium installiert und müssen wissen, wo sich die Ablage befindet

dpkg -L Chrom-Browser | grep bin

1
Grammin

find ./ -name "filename"oder Sie können etwas tun find ./ -name "*.jar", um alle Dateien mit der Erweiterung .jar zu finden. Sie können auch find ./ -name "*.jar" | xargs grep -n 'main'alle JAR-Dateien suchen, in denen sich ein Hauptverzeichnis befindet.

1
Will

find . -name test.html oder Sie können auch Platzhalter verwenden: find . -name \*test.html

1
peoro

Sie können den Befehl verwenden find, wenn Sie dies über ein Terminal tun möchten.

Pipelining findund grepwird funktionieren, ansonsten findgibt es einige Optionen (wie -nameund -iname), um dies zu tun:

find DIRECTORY -name test.html 
1
jonescb

Es gibt zwei Dienstprogramme findund locate. Da andere vorgeschlagen haben find, werde ich darüber sprechen locate.

Sie installieren ein Paket mit dem Namen mlocateoder slocateauf älteren Systemen. Nach der Installation den Befehl ausführen updatedb. locateverwendet eine Datenbank, um den Pfad zu allen Ihren Dateien zu speichern. Die Suche ist somit viel schneller, hat jedoch den Nachteil, dass das Datum häufig veraltet ist. Das Auffüllen der Datenbank kann einige Minuten dauern.

Sobald Sie die Datenbank gefüllt gerade laufen haben: locate file. Wenn Sie nur den Namen der Datei verwenden, sucht sie ab dieser Datei /. Du könntest /etc/fileund bekommen /usr/share/file. Wenn Sie es auf Ihr Home-Verzeichnis beschränken möchten, verwenden Sie Folgendes:

 locate file | grep /home/user 

Platzhalter funktionieren locateaus irgendeinem Grund nicht.

`locate` macht Muschelkugeln alias Wildcards. Möglicherweise müssen Sie dann Ihr Muster angeben. Sie können auch das `-r`-Flag verwenden, um reguläre Ausdrücke zu verwenden. Rich Homolka vor 13 Jahren 1
1

Ich kenne die Windows-Suchfunktion nicht, aber wenn Sie nach einer Alternative zu suchen grep * dann kannst du versuchen:

find /* -name "keyword" 

Slocate sollte auch in Ihre Kriterien passen.

Grüße / dley

1
thkala

findverfügt über eine Reihe von Optionen, mit denen Dateien nach Namen, regulären Ausdrücken oder noch komplexeren Kriterien wie Größe oder Besitz gesucht werden können. Z.B

find . -iname '*.txt' 

Siehe auch den Beispielabschnitt auf der verlinkten Handbuchseite.

Dies findhat jedoch den entscheidenden Nachteil, dass das Dateisystem jedes Mal, wenn Sie es aufrufen, durchsucht wird. Das locateDienstprogramm verwendet in seinen vielen Variationen eine regelmäßig aktualisierte Datenbank der Dateien in Ihrem System.

Vielen Dank! Der Befehl `find. -iname privacy.html` gibt das erwartete Ergebnis an, während locate dies nicht tut (es handelt sich um eine Datei privacy.html, die ich auf einem USB-Speicher gesucht habe) Niklas Rosencrantz vor 12 Jahren 0