by tito@ca.mbn.or.jp
Last update: $Date: 1999/12/30 06:26:36 $

CD-ROM を整理する

毎月増えるCD-ROMを整理するにはどうすれば良いか。目的のファイルを沢山の CD-ROM から探し出すにはどうすれば良いか。

一番単純には CD-ROMの ls-lRをとってgrep することですが、やはり CD-ROMの 枚数が増えると時間もかかるようになります。ところで locate filenameなどとするとシステムに存在するファイルをすばやく見つけ てくれますが、これはあらかじめインデックスを作成しているからです。 この仕組を使います。

インデックスを作成するコマンドは updatedb です。夜中にディスクが突然ガチャ ガチャ動きだして不審になって top してみた人もいると思いますがその実体です。 これらは slackware なら標準で入っていると思います。

データベースを置くディレクトリを決める

CD-ROM のインデックスを置く場所を決める。私は ~/locatedbs にしています。 そこに 1枚の CD-ROM に付き1つのファイル形式でデータベースを作ります。

ファイル名の決めかた

発行元-雑誌名-号数などのように適当に決めます。

データベースを作成する。

updatedb --localpaths=/cdrom/ --output=cdrom-index-file
cdromの後にスラッシュを付けるのが秘訣(?)です。

検索する

次の様なスクリプトを使って
$ 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.$$

戻る