aboutsummaryrefslogtreecommitdiff
path: root/ja/man/man1/locate.1
blob: 1b540dac61eb3e37cb14b3a5f793a061f05c7720 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
.\" Copyright (c) 1995 Wolfram Schneider <wosch@FreeBSD.org>. 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
.\"	%Id: locate.1,v 1.5.2.2 1997/04/18 11:14:30 jmg Exp %
.\"	jpman %Id: locate.1,v 1.3 1997/05/19 16:39:18 horikawa Stab %
.\"
.Dd June 6, 1993
.Dt LOCATE 1
.Os BSD 4.4
.Sh 名称
.Nm locate
.Nd ファイル名を高速に検索する
.Sh 書式
.Nm
.Op Fl Scims
.Op Fl l Ar limit
.Op Fl d Ar database 
pattern ...
.Sh 解説
.Nm locate
はデータベースを使って全てのパスを検索し、
.Ar pattern
にマッチしたファイル名を表示します。
データベースは定期的に(普通は週1回か毎日)再構築されます。
データベースの内容は、全ユーザがアクセスすることのできる
全てのファイル名です。
.Pp
.Ar pattern
にはシェルで使われるワイルドカード
.Po
.Dq *
.Dq ?
.Dq \e
.Dq [
.Dq \]
.Pc
を使用することができます。
その場合、ワイルドカードをシェルに解釈されないように
エスケープしなくてはいけません。
直前にバックスラッシュ
.Pq Dq \e
をつけると、いかなる文字も、
その文字が持つ特殊な意味が打ち消されます。
スラッシュ
.Pq Dq /
も含め、いかなる文字も特殊な意味を
持ちません。
.Pp
また、ワイルドカードを含まないパターン
.Pq Dq foo
を
指定した場合、
.Nm
は
.Dq *foo*
が指定されたものと解釈します。

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

使用可能なオプションは以下のとおりです。
.Bl -tag -width 10n indent
.It Fl S
データベースの統計を表示して終了します。
.It Fl c
通常の出力を行わず、マッチしたファイル名の数を表示します。
.It Fl d Ar database
デフォルトのデータベースを使わず、
.Ar database
を使って検索します。
複数回
.Fl d
を指定することで、複数のデータベースを
使うことができます。

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

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

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

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

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

.Do
$ locate -d db1 -d db2 -d db3 pattern
.Dc
は

.Dq $ locate -d db1:db2:db3 pattern
や

.Dq $ locate -d db1:db2 -d db3 pattern
と同じです。 

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

$ zcat database.gz | locate -d - pattern

これは、高速な 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
ライブラリを使います。
.Sh 関連ファイル
.Bl -tag -width /usr/libexec/locate.updatedb -compact
.It Pa /var/db/locate.database
locate データベース
.It Pa /usr/libexec/locate.updatedb
locate データベースを更新するためのスクリプト
.It Pa /etc/weekly
通常、locate.updatedb が起動されるスクリプト
.El
.Sh 環境変数
.Bl -tag -width LOCATE_PATH -compact
.It Pa LOCATE_PATH
データベースのパスを指定します。空文字の場合は無効です。
.Fl d 
オプションが指定された場合も無効になります。
.El
.Sh 関連項目
.Xr find 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/weekly 
スクリプトで週に一度更新されるデータベースから
情報を得ているためです。
データベースの構築に
.Xr find 1
を使うのは一時的な処置です。

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

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

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