Ich versuche, mit den Befehlen „Suchen“ und „Lokalisieren“ eine Datei zu finden.
locate
Der Befehl ist schneller, erfordert aber eine Aktualisierung der slocate
Datenbank. find
Der Befehl ist langsamer, erfordert aber keine Aktualisierungen.
Ich versuche, eine Art prd
System 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 updatedb
aber 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 find
in eine Datei umleiten und grep
diese wiederholt ausführen. Reiner Text benötigt mehr Platz als eine updatedb
Datenbank, 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