FreeBSDサーバーでexample.filename
のすべてのコピーを見つけようとしています。これを行うための最良/最も簡単/最も効率的な方法は何ですか?
find / -name example.filename
locate filename
find
よりもはるかに高速、if位置検索サービスを実行していて、その時点で存在していたファイルのみを検索するupdatedb
最後に実行されました(通常は、cronジョブの制御下にある前夜)。
あなたはcanupdatedb
を手動で実行できますが、それは the find
cletusが提案する よりも遅く、ルートが必要です。新しいものをたくさんインストールした後、データベースを手動で更新することがあります。
ロケート(別名slocate)がインストールされている場合は、
locate example.filename
locateは、マシン上のすべてのファイルのインデックスを再作成するcronジョブを毎晩実行します。そのため、常に最新であるとは限りません。
特定のディレクトリレベルでファイルを検索したい場合があります。この場合、シェルワイルドカードを使用すると便利です。
ls /data/*/example.filename
明らかにこれは、厳密なディレクトリ構造がある場合にのみ機能します。
locate
他の人が述べたように、 locate
はファイルをすばやく見つける方法です。このコマンドは、ファイルおよびフォルダー名の事前にコンパイルされたインデックスを使用します。ファイルシステムをクロールするのではなく、名前のこのデータベースが検索されます。
locate example.filename
大文字と小文字を区別しない場合は、-i
を追加します。
locate -i eXAmPle.FileName
locate
データベースを更新するlocate
が使用するデータベースは最新である必要があります。目的のファイルが含まれている可能性があるインストールまたはダウンロードを実行した後、locate
データベースを更新する必要があります。
locate
データベースは、最終的にはFreeBSDシステムによって自動的に更新されます。このタスクを含む毎週の家事セットがあります。これらの雑用は/etc/periodic/weekly/310.locate
スクリプトにリストされています。
locate
データベースの早期更新を強制する最も簡単で安全な方法は、毎週の雑用のセットを今すぐ強制することです。
Sudo periodic weekly
または、すべての通常の雑用を強制することもできます。これは、新しいFreeBSDシステムを設定した直後に行うことをお勧めします。
Sudo periodic daily weekly monthly
他の手段を使用してlocate
データベースを更新すると、安全ではないというメッセージが表示され、システムのすべてのファイルの名前がFreeBSDシステムのユーザーに明らかになる場合があります。 periodic
ルートを使用すると、この問題を回避できます。
最新のロケートデータベースがある場合は、次のようにします。
locate example.filename
私は時々します
find . | grep example.filename
しかしおそらく非常に非効率的です。