LOCATE

Section: User Commands (1)
索引 jman

BSD mandoc
 

索引

名称

locate - ファイル名を高速に検索する  

索引

書式

[-Scims ] [-l limit ] [-d database ] pattern ...  

索引

解説

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

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

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

歴史的な事情で、以前の は 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
``$ locate -d db1:db2:db3 pattern''

``$ locate -d db1:db2 -d db3 pattern''
と同じです。

データベースの名前として - を指定した場合、標準入力から読み込みます。 例えば、次のようにデータベースを圧縮して使うことができます。

$ zcat database.gz | locate -d - pattern

これは、高速な CPU、少ない RAM、遅い I/O を持つコンピュータを 使っている場合に便利です。 この場合、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.updatedb8
Woods, James A. 1983 "Finding Files Fast" ";login" 8:1 pp. 8-10
 

索引

バグ

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

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

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

索引

歴史

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


 

索引

Index

名称
書式
解説
関連ファイル
環境変数
関連項目
バグ
歴史

jman



Time: 07:06:12 GMT, January 12, 2009