UNIXシステムでファイルを検索する

UNIXシステムでファイルを検索する

find コマンドとlocate コマンドを使用してファイルを検索しようとしています。

locateコマンドは高速ですが、データベースを更新する必要がありますslocate。また、findコマンドは低速ですが、更新は必要ありません。

ある種のprdシステムを使用しようとしています。

私のシェル スクリプト用に、より高速で、初期レベルのユーザーでも使用できるコマンドを提案していただけませんか?

答え1

ファイルが2~3階層以下のサブディレクトリにあることを考慮すると、次のような(おそらく)より高速なコマンドを使用できます。

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

あなた自身の質問に答えることができたのでupdatedb位置特定を高速化する、 のように:

$ 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

見る更新されたDB男それについて助けを求めます。


@cas の提案に従って、代わりに出力をfindファイルにリダイレクトし、grep繰り返し実行します。プレーン テキストはupdatedbデータベースよりも多くのスペースを必要としますが、検索ははるかに高速です。

例えば:

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

関連情報