ファイルシステムの整理に便利なFSlint

 月日が経つとファイルシステムには無駄なアイテムが山積する。そんなとき、ファイルシステムの整理に役立つのがFSlintという気の利いたツールだ。空のディレクトリ、参照先の存在しないシンボリックリンク、不正な名前のファイル、重複するファイル、テンポラリファイルなど、さまざまなごみファイルを探し出してくれる。だが、その便利さを帳消しにしているのが、ほとんど存在しないドキュメント類と、慣れるまでにひと苦労しそうなGUIだ。

 FedoraとUbuntuのユーザは、それぞれ yumapt-getを使ってFSlintをインストールできる。インストールしたFSlintの起動には、ターミナルウィンドウから「fslint-gui」コマンドを使う。また、Fedora 7マシンであれば「Applications」→「System Tools」メニューからも起動できる。コマンドライン指向の人なら「/usr/share/fslint/fslint/fslint」コマンドにより、FSlintが見つけ出したすべてのアイテムを出力させてもよい。すると画面には、不正なIDを持つファイル、競合するファイル名、テンポラリファイル、空のディレクトリ、重複するファイル、それに“file name lint”という詳細不明のものなど、溢れんばかりの情報が表示される。ただし、こうした情報には何の説明もないので、(検索されたファイル等を不用意に削除して)自らのシステムを不安定な状態に陥れることのないように、Linuxのファイルシステムについてある程度理解しておく必要がある。たとえば、以下のファイルリストを見てみよう。これは、FSlintによる出力の“Duplicate files”(重複するファイル)のセクションに表示された内容だ。

.openoffice.org2.0/user/config/modern_en-US.sog
.openoffice.org2.0/user/config/modern_sk.sog
Lotus/XPD/.sodc/user/config/modern.sog
.gnome2/share/cursor-fonts/fonts.dir
.gnome2/share/fonts/fonts.dir
.openoffice.org2.0/user/config/cmyk.soc
Lotus/XPD/.sodc/user/config/cmyk.soc

 ファイル名が同じものも含めて似たようなファイルが2、3件ずつ並んでいるが、決して重複しているわけではない。したがって、たとえFSlintが重複ファイルと見なしていても、そのまま削除してはいけない。また、FSlintは以下のようなファイルの区別もできていない。

.openoffice.org2.0/user/config/palette_bg.soc
.openoffice.org2.0/user/config/palette_cs.soc
.openoffice.org2.0/user/config/palette_da.soc
.openoffice.org2.0/user/config/palette_de.soc
.openoffice.org2.0/user/config/palette_en-US.soc
.openoffice.org2.0/user/config/palette_es.soc

 なので、本当に重複しているファイルだけを表示したければ、findupツールを使うことになる。「/usr/share/fslint/fslint/findup 」とすれば、指定したディレクトリ内の重複ファイルがすべて表示される。ほかのコマンドラインツールを同じように使うことで、指定したディレクトリ内の関連ファイルを見つけ出すことができる。しかし、どのツールが何をするものなのかの説明がないので、そうしたツールの動作を把握するにはかなりの時間がかかるだろう。そこで、コマンドラインツールのそれぞれの役割がわかるのではないかと期待してfslint-guiを立ち上げて確かめてみたところ、各ツールの名前はまったくでたらめに付けられているわけでもないことが判明した。

  • findup ― 同じ名前のファイルの一覧を表示する
  • findsn ― シンボリックリンクを表示する
  • finded ― すべての空ディレクトリを表示する
  • findtf ― すべてのテンポラリファイルを見つけ出す
  • findns ― ストリップされていないすべてのバイナリ(デバッグ情報が埋め込まれているバイナリパッケージ)を表示する
  • findid ― 不正なIDを持つすべてのファイルを見つけ出す
  • findws ― ファイル名に冗長な空白が含まれるすべてのファイルを表示する
  • findbl ― 参照できないシンボリックリンクを持つファイルを見つけ出す
  • findnl ― 不正な名前を持つすべてのファイルを表示する。この一覧にはすべてのXChatログが含まれる
  • findul ― 使われていないライブラリをすべて見つけ出す

fslint-guiの使い方

 FSlintのコマンドラインツール群を使い分けるのが面倒な人は、fslint-guiを立ち上げてみよう。このGUIツールの上部には「Search path」、「Advanced search parameters」という2つのタブがある。起動時にはデフォルトで「Search path」タブの画面が表示され、プログラムの画面全体はいくつかのペインに分かれている。最上部のペインには、検索パス、または検索対象を限定するためのディレクトリ群を指定できる。デフォルトの検索対象ディレクトリは、使っているシステムのホームディレクトリになっている。別のディレクトリを検索パスに追加するには、「Add」ボタンをクリックして新しいディレクトリを選択する。FSlintは指定したディレクトリに対してデフォルトでは再帰的な検索を行うので、たとえば、検索パスに「/home/mydir/」と指定しておけば「/home/mydir/stuff/」の指定は必要ない。この再帰検索は、画面右側にある「recurse?」チェックボックスをオフにすることで解除できる。

 左側のペインには、FSlintによってファイルシステムから探し出せるすべての項目が並んでいる。指定したディレクトリ内にある空ディレクトリをすべて表示するには、「Empty directories」、「Find」の各ボタンを順にクリックする。すると、その場で検索が行われ、結果が表示される。ファイルの検索中であることは、「Find」ボタンのすぐ下に現れる“Searching…”という表示でわかる。ファイルを削除するには、表示されたファイルから対象を選択して、検索結果の右下にある「Delete」ボタンをクリックする。ところが、「Delete」の左側にある「Save」ボタンは、選択したファイルそのものではなくその検索結果を保存するものだ。検索結果から5件のファイルを選択した状態で「Save」ボタンをクリックすると、ファイル名の指定を求められたあと、選択済みファイルの名前が指定したファイルに記録される。また、3つ目の「Select」ボタンは、本来ならドロップダウンリストになっているべきものだ。このボタンをクリックすると、ちょうどドロップダウンリストをクリックしたときのように、使用するワイルドカードの選択、使用しているワイルドカードの解除、トグル選択、全解除といったオプションが表示される。ファイルの選択/解除には任意のワイルドカードが使える。たとえば、ファイル名に“en”が含まれるすべてのファイルを選択するには“*en*”、ファイル名が5文字のファイルを選択するには“?????”を使用すればよい。

 左側ペインに表示される項目の一部には、独自の検索オプションが用意されている。たとえば、「Temp files」ボタンをクリックしたときには、最終更新からの経過時間を指定して検出対象を絞り込むことができる。また、FSlintでは不正なシンボリックリンクを「Dangling」、「Suspect」、「Relative」、「Absolute」、「Redundant」といった名前のさまざまなカテゴリにグループ化できる。こうしたカテゴリは、「Bad symlink」ボタンをクリックするとラジオボタンとして横並びに表示される。ただし、不正なシンボリックリンクのカテゴリ表示を切り替えるたびに「Find」ボタンをクリックし直す必要がある。別のラジオボタンを選択しても、検索結果は更新されない。

 また「Advanced search parameters」タブでは、findコマンドの検索パラメータを指定できる。このコマンドは、システム上のごみファイルの検索にFSlintが使用しているものだ。

まとめ

 fslint-guiの粗雑なインターフェイスが開発者によって改められない限り、ユーザはこのGUIツールとわかりにくいFSlintコマンドラインツールに手を焼くことになるだろう。FSlintの隠れたオプションや不明瞭なオプションは、新規ユーザを困惑させるはずだ。そういう人はこのツールの対象ユーザではないのかもしれない。また、複数のタイプのファイルを同時に検索できないことを知って、私は興味を失ってしまった。FSlintは確かに便利なツールかもしれないが、ドキュメント類の欠如と設計の不完全さのせいで、その使い方は実際よりも難解になっている。

Shashank Sharmaは大学でコンピュータサイエンスを専攻中。専らフリー/オープンソースソフトウェアの初心者向け記事を執筆している。『Beginning Fedora』(Apress社刊)の共著者でもある。

Linux.com 原文