locate(1) FreeBSD 一般コマンドマニュアル

locate

前のページ 上に戻る 次のページ

locate




解説

     locate はデータベースを使って全てのパスを検索し、 pattern にマッチした
     ファイル名を表示します。データベースは定期的に(普通は週1回か毎日)再構築さ
     れます。データベースの内容は、全ユーザがアクセスすることのできる全ての
     ファイル名です。

     pattern にはシェルで使われるワイルドカード (``*'' ``?'' ``\'' ``[''
     ``]'') を使用することができます。その場合、ワイルドカードをシェルに解釈さ
     れないようにエスケープしなくてはいけません。直前にバックスラッシュ
     (``\'') をつけると、いかなる文字も、その文字が持つ特殊な意味が打ち消され
     ます。スラッシュ (``/'') も含め、いかなる文字も特殊な意味を持ちません。

     また、ワイルドカードを含まないパターン (``foo'') を指定した場合、 locate
     は ``*foo*'' が指定されたものと解釈します。

     歴史的な事情で、以前の locate は 32 から 127 までのキャラクタコードしか扱
     うことができませんでした。現在の処理方法では改行 (`\n') とヌル (`\0') 以
     外のキャラクタコードを処理できます。これまでサポートされていたプレイ
     ンASCIIのみで構成されたファイル名については、使用するメモリの量は増えてい
     ません。 32 未満、あるいは 127 をこえるキャラクタコードを含むファイル名に
     ついては、2 バイトを使って格納されます。

     使用可能なオプションは以下のとおりです。

     -S          データベースの統計を表示して終了します。

     -c          通常の出力を行わず、マッチしたファイル名の数を表示します。

     -d database
                 デフォルトのデータベースを使わず、 database を使って検索しま
                 す。複数回 -d を指定することで、複数のデータベースを使うこと
                 ができます。

                 オプションの database はコロンで区切ることで複数のデータベー
                 スを使うことができます。また、1つのコロンはデフォルトのデータ
                 ベースを表します。

                 $ locate -d $HOME/lib/mydb: foo

                 は ``foo'' をパターンとして、最初に $HOME/lib/mydb を、次に
                 /var/db/locate.database を検索します。

                 $ locate -d $HOME/lib/mydb::/cdrom/locate.database foo

                 は、 ``foo'' をパターンとして $HOME/lib/mydb,
                 /var/db/locate.database, /cdrom/locate.database の順番で検索
                 します。

                 $ locate -d db1 -d db2 -d db3 pattern
                 は

                 を使っている場合に便利です。この場合、1つのパターンしか指定す
                 ることができません。

     -i          パターンとデータベースの間での大文字と小文字の違いを無視しま
                 す。

     -l number   マッチしたファイル名の表示を、最大 number 個に制限します。

     -m          stdio(3) ライブラリのかわりに mmap(2) ライブラリを使います。
                 これはデフォルトの動作です。ほとんどの場合で、高速に動作しま
                 す。

     -s          mmap(2) ライブラリのかわりに stdio(3) ライブラリを使います。


関連ファイル

     /var/db/locate.database          locate データベース
     /usr/libexec/locate.updatedb     locate データベースを更新するためのスク
                                      リプト
     /etc/periodic/weekly/310.locate  データベース再構築を起動するスクリプト


環境変数

     LOCATE_PATH  データベースのパスを指定します。空文字の場合は無効です。 -d
                  オプションが指定された場合も無効になります。


関連項目

     find(1), whereis(1), which(1), fnmatch(3), locate.updatedb(8)

     Woods, James A., "Finding Files Fast", ;login, 8:1, pp. 8-10, 1983.


バグ

     locate が実際には存在するファイルをリストアップできない場合や、逆に、すで
     に削除されたはずのファイルをリストアップしてしまう場合があります。これは
     locate/etc/periodic/weekly/310.locate スクリプトで週に一度更新される
     データベースから情報を得ているためです。できて間もないファイルの検索には
     find(1) を使ってください。

     locate データベースファイルの所有者は ``nobody'' となっています。 find(1)
     はユーザ名 ``nobody'' 、グループ名 ``nobody'' 、あるいはその他のユーザに
     対してリード属性がないディレクトリを見付けた場合、そのディレクトリの検索
     をスキップします。例えば、ユーザのホームディレクトリに読み込み属性がな
     かったときは、そのユーザの全てのファイルはデータベースに登録されません。

     locate データベースの内容について、バイト順序の問題が解決されていません。
     バイト順序が違うコンピュータ同士では、データベースの共有ができません。両
     方のアーキテクチャで int のサイズが同じ場合、 locate はホストのバイト順
     序、ネットワークのバイト順序の違いに対応します。そのため、 FreeBSD/i386 (
     リトルエンディアン) 上で locate SunOS/sparc (ビッグエンディアン) 上で構築
     されたデータベースを使うことができます。


歴史

     locate は 4.4BSD から登場しました。 FreeBSD 2.2 で、新たに多くの機能が付
     け加えられました。

ABELNET VPSサービス