Suchen Sie nach einer Datei im Unix-System

Suchen Sie nach einer Datei im Unix-System

Ich versuche, mit den Befehlen „Suchen“ und „Lokalisieren“ eine Datei zu finden.

locateDer Befehl ist schneller, erfordert aber eine Aktualisierung der slocateDatenbank. findDer Befehl ist langsamer, erfordert aber keine Aktualisierungen.

Ich versuche, eine Art prdSystem zu verwenden.

Kann mir jemand einen Befehl für mein Shell-Skript vorschlagen, der schneller ist und von Anfängern verwendet werden kann?

Antwort1

Wenn man bedenkt, dass die Dateien in einigen Unterverzeichnissen liegen, die nicht tiefer als zwei oder drei verschachtelt sind, kann man einen (möglicherweise) schnelleren Befehl verwenden, wie zum Beispiel

(cd /path/to/directory; ls *.txt */*.txt */*/*.txt)

Da Sie es irgendwie geschafft haben, Ihre eigene Frage zu beantworten, verwenden Sie updatedbaber mitBeschleunigen der Ortung, wie:

$ updatedb -o /home/rahul/my.db -U /home/rahul/ -e "not/in/this/directory1 not/in/this/directory2"
$ locate -d /home/rahul/my.db            ### point locate to use your db

sehenaktualisiertb Mannfür Hilfe dazu.


Alternativ können Sie gemäß dem Vorschlag von @cas die Ausgabe findin eine Datei umleiten und grepdiese wiederholt ausführen. Reiner Text benötigt mehr Platz als eine updatedbDatenbank, lässt sich aber viel schneller durchsuchen.

Zum Beispiel:

find /path/to/directory > /tmp/files.list
grep -i file.xml /tmp/files.list
grep -i anotherfile.xml /tmp/files.list

verwandte Informationen