Kennen Sie eine gute Möglichkeit, eine Datei oder einen Inhalt rekursiv nach Namen zu finden, ähnlich der MS-Windows-Funktionssuche unter Linux? Ich vermute, dass find . | grep test.html
das nicht die beste ist. Danke für jede Antwort.
Beispielsweise find . | grep terms.html
liefert die Ausführung das erwartete Ergebnis, während locate terms.html
dies nicht der Fall ist, obwohl Locate eine aktualisierte Datenbank erhält. Vielleicht liegt es daran, dass sich die Datei auf einem USB-Stick befindet?
Antwort1
Der Befehl lautet „find“, und zwar so:
find . -iname '*hellofiles*'
Sie sagen, „find ·location· -iname“ bedeutet, dass die Groß-/Kleinschreibung nicht beachtet wird und dass „“ ein regulärer Ausdruck ist, 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 Festplatte regelmäßig scannt, z. B. jede Woche oder jeden Tag, je nachdem, wie es eingerichtet ist.
locate myfile
und es wird in der Datenbank nachgesehen, ob updatedb myfile irgendwo gesehen hat.
Antwort2
find
verfügt über eine Reihe von Optionen, mit denen Dateien nach Namen, regulären Ausdrücken oder sogar komplexeren Kriterien wie Größe oder Eigentümerschaft gefunden werden können. Beispiel:
find . -iname '*.txt'
Siehe auch den Beispielabschnitt in der verlinkten Manualpage.
Allerdings find
hat es den entscheidenden Nachteil, dass bei jedem Aufruf das Dateisystem durchsucht wird.locate
Das Dienstprogramm verwendet in seinen vielen Variationen dagegen eine regelmäßig aktualisierte Datenbank der Dateien in Ihrem System.
Antwort3
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, etwa:
dpkg -L Paketname | grep Ordnername
Sie haben beispielsweise gerade Chromium installiert und möchten wissen, wo sich der Bin befindet
dpkg -L Chromium-Browser | grep bin
Antwort4
find . -name test.html
oder Sie können auch Platzhalter verwenden:find . -name \*test.html