Manpages

名 前

locatedb − 前 置 圧 縮 さ れ た フ ァ イ ル 名 デ ー タ ベ ー ス

説 明

こ の マ ニ ュ ア ル ペ ー ジ は GNU 版 locate で 用 い る フ ァ イ ル 名 デ ー タ ベ ー ス の フ ォ ー マ ッ ト に つ い て 記 述 し た も の で あ る 。 フ ァ イ ル 名 デ ー タ ベ ー ス に は 、 最 後 に 更 新 さ れ た 時 点 に お い て 、 特 定 の デ ィ レ ク ト リ ツ リ ー 下 に 存 在 し て い た フ ァ イ ル の リ ス ト が 含 ま れ て い る 。 複 数 の デ ー タ ベ ー ス を 共 存 さ せ る こ と も で き る 。 環 境 変 数 や コ マ ン ド ラ イ ン オ プ シ ョ ン を 指 定 す れ ば 、 ユ ー ザ ー は locate に 検 索 さ せ る デ ー タ ベ ー ス を 選 択 す る こ と が で き る 。 詳 し く は locate(1) を 見 よ 。 シ ス テ ム 管 理 者 は デ フ ォ ル ト で 用 い ら れ る デ ー タ ベ ー ス の 名 前 や 、 デ ー タ ベ ー ス の 更 新 頻 度 、 ま た デ ー タ ベ ー ス に 入 れ る デ ィ レ ク ト リ な ど を 選 択 す る こ と が で き る 。 通 常 フ ァ イ ル 名 デ ー タ ベ ー ス の 更 新 は updatedb プ ロ グ ラ ム を 定 期 的 に 実 行 さ せ る こ と に よ っ て 行 な う (夜 間 が 良 い だ ろ う )。 詳 細 は updatedb(1) を 見 よ 。

updatedbfrcode と い う プ ロ グ ラ ム を 呼 び 出 し て フ ァ イ ル 名 の リ ス ト を 前 置 圧 縮 (front compression) す る 。 こ れ に よ っ て デ ー タ ベ ー ス の サ イ ズ は 1/4 か ら 1/5 に な る 。 前 置 圧 縮 (イ ン ク リ メ ン タ ル エ ン コ ー デ ィ ン グ と も 呼 ば れ る ) は 以 下 の よ う な 動 作 を す る 。 デ ー タ ベ ー ス の エ ン ト リ は ソ ー ト さ れ た リ ス ト か ら な っ て い る (ユ ー ザ ー の 利 便 性 の た め 、 大 文 字 小 文 字 は 区 別 し て い な い )。 従 っ て 、 各 々 の エ ン ト リ は 直 前 の エ ン ト リ と 最 初 の 数 文 字 が 一 致 し て い る こ と が 多 い 。 そ れ ぞ れ の デ ー タ ベ ー ス エ ン ト リ に は 、 ま ず オ フ セ ッ ト 差 分 カ ウ ン ト と い う 1 バ イ ト の デ ー タ が 入 っ て い る 。 こ れ は 現 在 の エ ン ト リ と 直 前 の エ ン ト リ の 共 有 部 分 の 文 字 数 か ら 、 直 前 の エ ン ト リ と そ の も う ひ と つ 前 の エ ン ト リ の 共 有 文 字 数 を 引 い た も の で あ る (従 っ て こ の 数 値 は 負 に な る こ と も あ る )。 カ ウ ン ト の 後 に は 共 有 部 分 の 文 字 列 以 降 の 残 り が ASCII 文 字 列 で 与 え ら れ る 。 こ れ は ヌ ル 文 字 で 終 端 す る と み な さ れ る 。 も し オ フ セ ッ ト 差 分 カ ウ ン ト が バ イ ト デ ー タ で 与 え ら れ る 範 囲 (+/−127) を 越 え た 場 合 は 、 バ イ ト デ ー タ 0x80 が カ ウ ン ト に 代 入 さ れ 、 2 バ イ ト の ワ ー ド デ ー タ が そ の 後 に 続 く 。 こ の ワ ー ド デ ー タ で は 高 位 バ イ ト が 先 に 来 る (ネ ッ ト ワ ー ク バ イ ト オ ー ダ ー )。 す べ て の デ ー タ ベ ー ス は 、 フ ァ イ ル エ ン ト リ の 最 初 に ’LOCATE02’ と い う ダ ミ ー の エ ン ト リ を 持 つ 。 こ れ は locate に よ っ て チ ェ ッ ク さ れ 、 こ の デ ー タ ベ ー ス が 正 し い フ ォ ー マ ッ ト で あ る こ と を 確 認 す る た め に 用 い ら れ る 。 実 際 の 検 索 に お い て は こ の エ ン ト リ は 無 視 さ れ る 。 複 数 の デ ー タ ベ ー ス を 連 結 す る こ と は で き な い 。 最 初 の (ダ ミ ー ) エ ン ト リ を 結 合 す る デ ー タ ベ ー ス か ら 取 り 去 れ ば 良 さ そ う だ が 、 こ れ は 正 し く な い 。 な ぜ な ら 後 に 続 く デ ー タ ベ ー ス の 最 初 の エ ン ト リ に お け る オ フ セ ッ ト 差 分 カ ウ ン ト は 正 し い 値 を 取 り 得 な い か ら で あ る 。

Unix 版 locate お よ び find や 、 以 前 の GNU 版 で 用 い ら れ て い た 古 い デ ー タ ベ ー ス フ ォ ー マ ッ ト も 存 在 し て い る 。 こ の 古 い 形 式 の デ ー タ ベ ー ス を 作 成 す る 場 合 に は 、 updatedbbigramcode と い う プ ロ グ ラ ム を 呼 び 出 す 。 古 い フ ォ ー マ ッ ト が 上 に 述 べ た 記 述 と 異 な る 点 を 以 下 に 示 す 。 そ れ ぞ れ の エ ン ト リ が オ フ セ ッ ト 差 分 カ ウ ン ト の バ イ ト デ ー タ で 始 ま り ヌ ル 文 字 で 終 わ る 代 わ り に 、 0 か ら 28 ま で の バ イ ト デ ー タ が −14 か ら 14 ま で の オ フ セ ッ ト 差 分 カ ウ ン ト と し て 用 い ら れ 、 こ れ が エ ン ト リ 区 切 り を 兼 ね る こ と に な る 。 こ の 範 囲 外 の 長 い オ フ セ ッ ト 差 分 カ ウ ン ト を 示 す デ ー タ に は 、 0x80 で は な く 0x1e (30) が 使 わ れ る 。 長 い カ ウ ン ト を 保 有 す る デ ー タ に は ホ ス ト の バ イ ト オ ー ダ が 用 い ら れ (こ れ は ネ ッ ト ワ ー ク バ イ ト オ ー ダ と 等 し い と は 限 ら な い )、 ま た ホ ス ト の integer の ワ ー ド サ イ ズ (4 バ イ ト の こ と が 多 い ) が 用 い ら れ る 。 ま た こ こ に ス ト ア さ れ る デ ー タ は 実 際 の 値 か ら 14 を 引 い た 値 に な る 。 デ ー タ ベ ー ス の 各 エ ン ト リ に は 終 端 バ イ ト が 無 く 、 30 以 下 の 値 を 持 つ バ イ ト デ ー タ が 次 の エ ン ト リ の 始 ま り で あ る と 認 識 さ れ る 。 さ ら に 古 い デ ー タ ベ ー ス 形 式 で は 、 ダ ミ ー エ ン ト リ の 代 わ り に 先 頭 に 256 バ イ ト の テ ー ブ ル が あ り 、 フ ァ イ ル リ ス ト で も っ と も 頻 繁 に 用 い ら れ て い る bigram が 並 べ て あ る 。 bigram と は 隣 接 し た 二 つ の バ イ ト デ ー タ を イ ン デ ッ ク ス 付 け し た も の で あ る 。 デ ー タ ベ ー ス に 現 わ れ る バ イ ト デ ー タ の う ち 、 最 高 位 ビ ッ ト が セ ッ ト さ れ て い る も の は (残 り の 7 ビ ッ ト を イ ン デ ッ ク ス と し て ) bigram テ ー ブ ル の デ ー タ と 置 換 さ れ る 。 こ の bigram と オ フ セ ッ ト 差 分 カ ウ ン ト を 用 い る こ と で 、 デ ー タ ベ ー ス の 大 き さ は 新 し い フ ォ ー マ ッ ト よ り 20-25% 小 さ く な っ て い る 。 し か し 8 ビ ッ ト ク リ ー ン で な い と い う 欠 点 を 併 せ 持 つ 。 フ ァ イ ル 名 に 含 ま れ る バ イ ト デ ー タ の う ち 、 ス ペ シ ャ ル コ ー ド に 属 す る も の は 、 デ ー タ ベ ー ス 中 で は す べ て ク エ ス チ ョ ン マ ー ク で 置 き 換 え ら れ る 。 こ れ は 任 意 の 一 文 字 を 表 わ す シ ェ ル の ワ イ ル ド カ ー ド な の で 、 実 際 の フ ァ イ ル 名 に 現 わ れ る こ と は な い 。

frcode へ の 入 力 が 以 下 の よ う な も の と す る ( ヌ ル 文 字 は 改 行 に 置 き 換 え て あ る ) :

/usr/src
/usr/src/cmd/aardvark.c
/usr/src/cmd/armadillo.c
/usr/tmp/zoo 直 前 の エ ン ト リ と の 最 長 一 致 部 分 の 長 さ は :

0 /usr/src
8 /cmd/aardvark.c
14 rmadillo.c
5 tmp/zoo

frcode か ら の 出 力 は 、 最 後 の ヌ ル 文 字 を 改 行 に 代 え 、 カ ウ ン ト バ イ ト を 数 字 に 代 え る と 以 下 の よ う な も の に な る :

0 LOCATE02
0 /usr/src
8 /cmd/aardvark.c
6 rmadillo.c
−9 tmp/zoo

(6 = 14 − 8 ま た −9 = 5 − 14)

関 連 項 目

find(1), locate(1), updatedb(1), xargs(1)
Finding Files
(on-line in Info, or printed)