.\" Copyright (c) 1995 Wolfram Schneider . Berlin. .\" Copyright (c) 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)locate.1 8.1 (Berkeley) 6/6/93 .\" %FreeBSD: src/usr.bin/locate/locate/locate.1,v 1.16.2.4 2001/08/16 13:16:55 ru Exp % .\" $FreeBSD: doc/ja_JP.eucJP/man/man1/locate.1,v 1.12 2001/07/29 05:14:51 horikawa Exp $ .\" .Dd June 6, 1993 .Dt LOCATE 1 .Os .Sh 名称 .Nm locate .Nd ファイル名を高速に検索する .Sh 書式 .Nm .Op Fl Scims .Op Fl l Ar limit .Op Fl d Ar database .Ar pattern ... .Sh 解説 .Nm locate はデータベースを使って全てのパスを検索し、 .Ar pattern にマッチしたファイル名を表示します。 データベースは定期的に(普通は週1回か毎日)再構築されます。 データベースの内容は、全ユーザがアクセスすることのできる 全てのファイル名です。 .Pp .Ar pattern にはシェルで使われるワイルドカード .Dq ( * .Dq \&? .Dq \e .Dq \&[ .Dq \&] ) を使用することができます。 その場合、ワイルドカードをシェルに解釈されないように エスケープしなくてはいけません。 直前にバックスラッシュ .Pq Dq \e をつけると、いかなる文字も、 その文字が持つ特殊な意味が打ち消されます。 スラッシュ .Pq Dq / も含め、いかなる文字も特殊な意味を 持ちません。 .Pp また、ワイルドカードを含まないパターン .Pq Dq foo を 指定した場合、 .Nm は .Dq *foo* が指定されたものと解釈します。 .Pp 歴史的な事情で、以前の .Nm は 32 から 127 までのキャラクタコード しか扱うことができませんでした。 現在の処理方法では改行 .Pq Sq \en とヌル .Pq Sq \e0 以外のキャラクタ コードを処理できます。 これまでサポートされていたプレインASCIIのみで構成された ファイル名については、使用するメモリの量は増えていません。 32 未満、あるいは 127 をこえるキャラクタコードを含むファイル名 については、2 バイトを使って格納されます。 .Pp 使用可能なオプションは以下のとおりです。 .Bl -tag -width 10n .It Fl S データベースの統計を表示して終了します。 .It Fl c 通常の出力を行わず、マッチしたファイル名の数を表示します。 .It Fl d Ar database デフォルトのデータベースを使わず、 .Ar database を使って検索します。 複数回 .Fl d を指定することで、複数のデータベースを 使うことができます。 .Pp オプションの .Ar database はコロンで区切ることで複数のデータベースを使うことができます。 また、1つのコロンはデフォルトのデータベースを表します。 .Bd -literal $ locate -d $HOME/lib/mydb: foo .Ed .Pp は .Dq foo をパターンとして、 最初に .Pa $HOME/lib/mydb を、次に .Pa /var/db/locate.database を検索します。 .Bd -literal $ locate -d $HOME/lib/mydb::/cdrom/locate.database foo .Ed .Pp は、 .Dq foo をパターンとして .Pa $HOME/lib/mydb , .Pa /var/db/locate.database , .Pa /cdrom/locate.database の順番で検索します。 .Bd -literal $ locate -d db1 -d db2 -d db3 pattern .Ed は .Bd -literal .Dq $ locate -d db1:db2:db3 pattern .Ed .Pp や .Bd -literal .Dq $ locate -d db1:db2 -d db3 pattern .Ed と同じです。 .Pp データベースの名前として .Ar - を指定した場合、標準入力から読み込みます。 例えば、次のようにデータベースを圧縮して使うことができます。 .Bd -literal $ zcat database.gz | locate -d - pattern .Ed .Pp これは、高速な CPU 、少ない RAM 、遅い I/O を持つコンピュータを 使っている場合に便利です。 この場合、1つのパターンしか指定することができません。 .It Fl i パターンとデータベースの間での大文字と小文字の違いを無視します。 .It Fl l Ar number マッチしたファイル名の表示を、最大 .Ar number 個に制限します。 .It Fl m .Xr stdio 3 ライブラリのかわりに .Xr mmap 2 ライブラリを使います。 これはデフォルトの動作です。ほとんどの場合で、高速に動作します。 .It Fl s .Xr mmap 2 ライブラリのかわりに .Xr stdio 3 ライブラリを使います。 .El .Sh 関連ファイル .Bl -tag -width /etc/periodic/weekly/310.locate -compact .It Pa /var/db/locate.database locate データベース .It Pa /usr/libexec/locate.updatedb locate データベースを更新するためのスクリプト .It Pa /etc/periodic/weekly/310.locate データベース再構築を起動するスクリプト .El .Sh 環境変数 .Bl -tag -width LOCATE_PATH -compact .It Pa LOCATE_PATH データベースのパスを指定します。空文字の場合は無効です。 .Fl d オプションが指定された場合も無効になります。 .El .Sh 関連項目 .Xr find 1 , .Xr whereis 1 , .Xr which 1 , .Xr fnmatch 3 , .Xr locate.updatedb 8 .Rs .%A Woods, James A. .%D 1983 .%T "Finding Files Fast" .%J ";login" .%V 8:1 .%P pp. 8-10 .Re .Sh バグ .Nm が実際には存在するファイルをリストアップできない場合や、 逆に、すでに削除されたはずのファイルをリストアップ してしまう場合があります。 これは .Nm が .Pa /etc/periodic/weekly/310.locate スクリプトで週に一度更新されるデータベースから 情報を得ているためです。 できて間もないファイルの検索には .Xr find 1 を使ってください。 .Pp .Nm データベースファイルの所有者は .Dq nobody となっています。 .Xr find 1 はユーザ名 .Dq nobody 、グループ名 .Dq nobody 、あるいはその他のユーザに対してリード属性がない ディレクトリを見付けた場合、 そのディレクトリの検索をスキップします。 例えば、ユーザのホームディレクトリに読み込み属性が なかったときは、そのユーザの全てのファイルはデータベースに 登録されません。 .Pp .Nm データベースの内容について、バイト順序の問題が解決されていません。 バイト順序が違うコンピュータ同士では、 データベースの共有ができません。 両方のアーキテクチャで int のサイズが同じ場合、 .Nm はホストのバイト順序、ネットワークのバイト順序の 違いに対応します。 そのため、 .Fx Ns /i386 (リトルエンディアン) 上で .Nm SunOS/sparc (ビッグエンディアン) 上で構築された データベースを使うことができます。 .Sh 歴史 .Nm locate は .Bx 4.4 から登場しました。 .Fx 2.2 で、新たに多くの機能が付け加えられました。