一番単純には CD-ROMの ls-lRをとってgrep することですが、やはり CD-ROMの 枚数が増えると時間もかかるようになります。ところで locate filenameなどとするとシステムに存在するファイルをすばやく見つけ てくれますが、これはあらかじめインデックスを作成しているからです。 この仕組を使います。
インデックスを作成するコマンドは updatedb です。夜中にディスクが突然ガチャ ガチャ動きだして不審になって top してみた人もいると思いますがその実体です。 これらは slackware なら標準で入っていると思います。
updatedb --localpaths=/cdrom/ --output=cdrom-index-filecdromの後にスラッシュを付けるのが秘訣(?)です。
$ locater filenameとします。出力形式は改善の余地ありです。
#!/bin/sh # filename: locater case $1 in -l) OPT_L=ON shift ;; esac TARGET=$1 trap 'rm -f /tmp/locater.$$; exit 1' 1 2 15 for i in $HOME/locatedbs/* do locate -d $i $TARGET >/tmp/locater.$$ 2> /dev/null case $? in 0) echo echo $i if [ ! "x$OPT_L" = "xON" ] ; then cat /tmp/locater.$$ fi ;; *) ;; esac done rm /tmp/locater.$$