web-dev-qa-db-ja.com

FreeBSDでファイルを見つける方法

FreeBSDサーバーでexample.filenameのすべてのコピーを見つけようとしています。これを行うための最良/最も簡単/最も効率的な方法は何ですか?

14
Ian
find / -name example.filename
18
cletus
locate filename

findよりもはるかに高速、if位置検索サービスを実行していて、その時点で存在していたファイルのみを検索するupdatedb最後に実行されました(通常は、cronジョブの制御下にある前夜)。

あなたはcanupdatedbを手動で実行できますが、それは the find cletusが提案する よりも遅く、ルートが必要です。新しいものをたくさんインストールした後、データベースを手動で更新することがあります。

ロケート(別名slocate)がインストールされている場合は、

locate example.filename

locateは、マシン上のすべてのファイルのインデックスを再作成するcronジョブを毎晩実行します。そのため、常に最新であるとは限りません。

2
Paul Tomblin

特定のディレクトリレベルでファイルを検索したい場合があります。この場合、シェルワイルドカードを使用すると便利です。

ls /data/*/example.filename

明らかにこれは、厳密なディレクトリ構造がある場合にのみ機能します。

2
Jon Ericson

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ルートを使用すると、この問題を回避できます。

1
Basil Bourque

最新のロケートデータベースがある場合は、次のようにします。

locate example.filename
0
Sophie Alpert

私は時々します


  find . | grep example.filename

しかしおそらく非常に非効率的です。

0
kgrad