しばらくお休みしていた連載を再開して半年、ようやく以前のペースを取り戻しつつあります。毎週テーマを決めて素材を揃える作業はツラいですが、Appleが次々に新製品・新サービスを投下してくれますからね、ありがたいことです。ともあれ、来年も引き続きよろしくお願いします。

さて、今回は「ファイルの削除」について。年末といえば大掃除、家の中をキレイにして新年を迎えるものだが、Macとて同じこと。せめて年1回は不要なファイルを削除してスッキリすべきだ。なお、事故防止のため、事前にTime Machineでバックアップしておくことを強くお勧めする。バックアップさえあれば、より大胆に"大掃除"を決行できるはずだ。

手始めはGUIツールで

「大掃除しろ」と大上段からいわれても、なにから手をつけてよいのやら……そんな人にお勧めのツールが「Disk Inventory X」だ。OS X Lionでも支障なく動作するが、環境設定パネルからインストールできる付属のFinderプラグインが動作しない(FinderプラグインはSnow Leopardで廃止された)点には留意しておきたい。

Disk Inventory X
http://www.derlien.com/downloads/index.html

このツール、起動すると自動的に起動ボリューム上のサーチを開始し、ファイル種別ごとに分類表示してくれる。種類といっても拡張子別ではなく、JPEGやPNG、PDFなどの「プレビューDocumnet」や、オフィス書類やテキストファイルといった「Document」のように大まかなものだが、ディスクの消費状況を一目で把握できる。

「Disk Inventory X」はこのようにディスクの消費状況を可視化してくれる

削除の手順だが、メニューバーで「Window」→「Show Selection List」を選択し、ウインドウ下に現れたシートにあるプルダウンでファイル種別を選択する。ここから先はファイルフォーマットに関する知識を要求されるが、「Disk Image」や「ZIP archive」などの文字を頼りに、削除して支障なさそうなものを選ぼう。そして削除対象のファイル上でコンテキストメニューを表示し(「Control」+クリック)、「Move To Trash」を選択すれば削除完了だ。

ウインドウ下のシートで検索や並べ替えを行い、絞り込んだうえで削除を進めていく。一括処理には適さないツールだが、慎重に削除できる点がうれしい

コマンドラインで徹底的に

GUIツールは扱いやすいが、"一括削除"には適していないように思う。先ほど紹介した「Disk Inventory X」も、ディスクの使用状況を可視化するのはいいとして、複数のファイルを選択して削除する機能はなく、フォルダ構造を再帰的に削除することもできない。今回は大掃除が目的なのだから、まとめてバッサリ削除できるほうが好都合なのだ。

となれば、当コラムではTerminalの出番となる。まずは、以下のコマンドラインを試してほしい。findコマンドを使い、カレントディレクトリ以下の領域を対象に(.)、ファイルであることを条件とし(-type f)、末尾が「.log」という名前のファイル(ワイルドカード「*」を使いログファイルに使用される拡張子を表現)を検索する。末尾の「-print」は、後述するxargsコマンドに備えてのものだ。カレントディレクトリをホームフォルダにしたうえで実行してみよう。

$ find . -type f -name '*.log' -print0

おそらく、パスに「/Library/Logs/」を含む大量のファイルがヒットしたことだろう。その内容を大まかに確認し、問題なければ削除決行だ。シェルのコマンド履歴機能(「Control」+「P」)を使い、直前に実行したコマンドラインを呼び出して、末尾に「| xargs -0 rm」を追加したうえで実行すればいい。これで、先ほど表示されたログファイルはすべて削除される。

$ find . -type f -name '*.log' -print0 | xargs -0 rm

追加した文字列は、findコマンドの実行結果をxargsコマンドにパイプするためのものだ。xargsコマンドは、標準入力から引数を読み込み指定のコマンドを実行する働きを持つ。今回示したコマンド実行例では、findコマンドの検索結果をフルパスでヌル文字をくわえて標準出力へアウトプットし(「-print0」オプションの働き)、それを受けるxargsコマンドでは文字列の区切りにヌル文字を使用している(「-0」オプションの働き)。なぜこのような手間をかけるかというと、OS Xではファイル名にスペースを含むことが多いからだ。

このコマンドラインは、いろいろなファイル種に応用が利く。拡張子を把握していることが前提条件だが、JPEGやPNGなどの画像ファイル、WordやExcelといったオフィス文書は、改めて説明するまでもないだろう。筆者は「-name '*~'」として、Emacsにより生成されたバックアップファイルを一括削除するときに利用しているが、「-name '.DS_Store'」のようなドットファイルの削除にも使える。年末の大掃除に、ぜひ活用してほしい。

Finderでは削除することすら困難な「.DS_Store」も、かんたんに一括削除できる

関連記事
【レビュー】NTFSを高速に読み書きできる「Paragon NTFS for Mac OS X 9」(2011年9月23日)
【コラム】新・OS X ハッキング! Lion直前だからこそ、スマートにHDDを健康診断する(2011年6月24日)
【コラム】OS X ハッキング! 第342回 知られざるSnow Leopard(NTFS編)(2009年11月5日)
【コラム】OS X ハッキング! 第333回 Snow Leopardまで秒読み、だからこそ「Time Machine」でバックアップ(2009年8月24日)
【コラム】OS X ハッキング! 第229回 S.M.A.R.T.にHDDの寿命を監視する(2007年6月8日)