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


14

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


1
答えは似ていますが、Linuxを使用しているか、FreeBSDを使用しているかを明確にしたい場合があります。それらは同じものではありません。
グレッグヒューギル

OSをより具体的にするためにタイトルを編集
イアン

これにはおそらくFreeBSDのタグを付ける必要がありますが、そうする評判はありません。
mikl 2009

回答:


18
find / -name example.filename

2
信頼できますが、遅いです。時々非常に遅い。
dmckee ---元モデレーター子猫

3
必要に応じて適切な他の「検索」フラグ:-type f(同じ名前のディレクトリまたはシンボリックリンクを使用しません)-ls(ファイルのサイズなどの詳細を表示します。たとえば、ファイルに同じものがある場合名前が異なる内容)
ザックトンプソン

19
locate filename

はるかに速くよりもfind場合あなたはサービスを見つけ実行している、そしてそれは、一度に存在していたファイル見つかっupdatedb(cronジョブの制御下befor usualy夜)最後に実行します。

あなたはできる実行updatedb手で、それさえも遅いよりも示唆cletus、およびルートが必要です。たくさんの新しいものをインストールした後、私は時々データベースを手動で更新します。find


3
Locateは、locate dbを構築するためにサービスを実行している場合にのみ機能します(名前を忘れてください)。また、遅延が発生する可能性があります(探しているファイルは最後のビルド以降に追加されている可能性があるため)。
クレタス2009

編集とコメントがワイヤ上でクロスしました。涼しい。もちろん、あなたは両方の点で正しいです。
dmckee ---元モデレーター子猫

4
find /1週間に2回以上、または大きなツリーで作業していることに気付いた場合locateは、サービスを実行する価値がありlocate(1)ます。
ドリュースティーブンス

@cletus Running sudo periodic weeklylocateデータベースを更新します。必要なファイルが含まれている可能性のあるインストールまたはダウンロードの後に​​実行します。
バジルブルク

2

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

locate example.filename

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


2

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

ls /data/*/example.filename

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


1

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



0

時々する


  find . | grep example.filename

ただし、おそらく非常に非効率的です。


うん、それはすべてに一致し、探していたその名前以外のすべてを捨てます。代わりに、 'find -name "example.filename"'を実行するだけで、最初にすべてを印刷せずに、追加のgrepプロセスを実行せずにまったく同じ処理を実行できます。
ミハイリンバシャン2009年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.