findutils (locate)

/usr/bin/find.exe
/usr/bin/locate.exe
/usr/bin/oldfind.exe
/usr/bin/updatedb
/usr/bin/xargs.exe
/usr/lib/bigram.exe
/usr/lib/code.exe
/usr/lib/frcode.exe
/usr/share/doc/Cygwin/findutils.README
/usr/share/doc/findutils/AUTHORS
/usr/share/doc/findutils/ChangeLog
/usr/share/doc/findutils/COPYING
/usr/share/doc/findutils/NEWS
/usr/share/doc/findutils/README
/usr/share/doc/findutils/THANKS
/usr/share/doc/findutils/TODO
/usr/share/info/find-maint.info.gz
/usr/share/info/find.info-1.gz
/usr/share/info/find.info.gz
/usr/share/locale/be/LC_MESSAGES/findutils.mo
/usr/share/locale/bg/LC_MESSAGES/findutils.mo
...
/usr/share/man/man1/find.1.gz
/usr/share/man/man1/locate.1.gz
/usr/share/man/man1/updatedb.1.gz
/usr/share/man/man1/xargs.1.gz
/usr/share/man/man5/locatedb.5.gz

findxargsのような超基本的なものからいろいろとある。従ってbaseのカテゴリに必然的に居たりする。

updatedbおよびlocate

旧cygwinではSJISの関係でそのままでは使いものにならなかったようなものが、最近の1.7系あたりではちゃんと動作するっぽい。

まずupdatedbをかけて内部のデータベースを更新する必要がある。何てことはなくただfindをかけまくるというシェルスクリプトだったりもする。

そのまま実行すると割と危険なところもあるのでmanを見ておく。

テスト実行

cygwinでupdatedbする時は–localpathを与えた方がよいだろう

このように実行してみる

% updatedb --localpaths="/usr"

次にこのようにしてみる

% locate cygwin1.dll
/usr/bin/cygwin1.dll

このようになれば、とりあえずは成功といえる。

Cドライブを含めるならこのようになるだろう。

% updatedb --localpaths="/usr /cygdrive/c"

% locate pagefile.sys
/cygdrive/c/pagefile.sys

このような具合でupdatedbに探してもらいたい所を重点的にやるのが賢い利用法かもしれない。ネットワーク接続するドライブなどがあると/cygdrive以下にマウントされてどんどん辿られてしまう可能性がある。Unixシステムと違い、prunefsのオプションがどこまで有効なのか微妙な所なのでやはり直接指定した方がよろしかろうかとは思う。

あとlvをいれておくと何かと便利(最近は最初から入るようになりますた)。中のIOはUTF-8で行われる。

設定ファイル、は無いのでシェルを書いておこう

どこでもいいけど$HOME/bin/locateとか的な?

cronと一緒に使う

あとでかく

findutils.txt · 最終更新: 2017/01/28 10:40 by admin
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0