pattern にはシェルで使われるワイルドカード ``('' ``?'' ``\'' ``['' ``]'' を使用することができます。 その場合、ワイルドカードをシェルに解釈されないように エスケープしなくてはいけません。 直前にバックスラッシュ (``\'' ) をつけると、いかなる文字も、 その文字が持つ特殊な意味が打ち消されます。 スラッシュ (``/'' ) も含め、いかなる文字も特殊な意味を 持ちません。
また、ワイルドカードを含まないパターン (``foo'' ) を 指定した場合、 は ``*foo*'' が指定されたものと解釈します。
歴史的な事情で、以前の は 32 から 127 までのキャラクタコード しか扱うことができませんでした。 現在の処理方法では改行 (`\n' ) とヌル (`\0' ) 以外のキャラクタ コードを処理できます。 これまでサポートされていたプレインASCIIのみで構成された ファイル名については、使用するメモリの量は増えていません。 32 未満、あるいは 127 をこえるキャラクタコードを含むファイル名 については、2 バイトを使って格納されます。
使用可能なオプションは以下のとおりです。
オプションの 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つのパターンしか指定することができません。
データベースファイルの所有者は ``nobody'' となっています。 find(1) ユーティリティはユーザ名 ``nobody'' 、グループ名 ``nobody'' 、あるいはその他のユーザに対してリード属性がない ディレクトリを見付けた場合、 そのディレクトリの検索をスキップします。 例えば、ユーザのホームディレクトリに読み込み属性が なかったときは、そのユーザの全てのファイルはデータベースに 登録されません。
データベースの内容について、バイト順序の問題が解決されていません。 バイト順序が違うコンピュータ同士では、 データベースの共有ができません。 両方のアーキテクチャで int のサイズが同じ場合、 はホストのバイト順序、ネットワークのバイト順序の 違いに対応します。 そのため、 Fx Ns /i386 (リトルエンディアン) 上で SunOS/sparc (ビッグエンディアン) 上で構築された データベースを使うことができます。