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