
Mac OS X 内でこれまでにダウンロードされたすべてのファイルのダウンロード履歴リストを表示します。
Macのダウンロード履歴をすべてリスト表示したいと思ったことはありませんか?ファイルをダウンロードしたことは分かっているものの、どこからダウンロードしたのか分からず、「情報を見る」機能も使えなかった、という経験はありませんか?あるいは、システム上に置かれたファイルが問題の原因となっている可能性もあるでしょう。トラブルシューティング、個人的な興味、あるいはフォレンジック調査など、目的が何であれ、以下のコマンドを使えば、Macにダウンロードしたすべてのファイルを、ダウンロード元アプリケーションに関係なく表示できます。
Macにダウンロードされたすべてのファイルのリストを表示する方法
これは、Macを悪意のあるダウンロードから保護するために設計されたOS Xのファイル隔離データベースにクエリを実行することで機能します。この目的のために、ターミナルアプリケーションとsqliteを使用します。
- /Applications/Utilities/ からターミナルを起動し、次のコマンドを 1 行に入力します。
- ダウンロードしたファイルのリストを見るにはリターンキーを押してください
sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* 'select LSQuarantineDataURLString from LSQuarantineEvent'
Macの古さやダウンロードしたファイルの量によっては、データベースへのクエリと結果のダンプに時間がかかる場合があります。ダウンロードリストを類似のアイテムやソースにグループ化するには、結果を「sort」にパイプすると良いでしょう。例えば、以下のようになります。
sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* 'select LSQuarantineDataURLString from LSQuarantineEvent' | sort
見やすくするために、出力をテキスト ファイルにリダイレクトすることもできます。このコマンドは、アクティブ ユーザーのデスクトップ上の「QuarantineEventList.txt」というファイルにリストをダンプします。
sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* 'select LSQuarantineDataURLString from LSQuarantineEvent' > ~/Desktop/QuarantineEventList.txt
出力には、隔離マネージャを通過したすべての項目がリストされます。これは、Mac OS Xの最近のバージョンでは、アプリケーションに関係なく、文字通りMacにダウンロードされたすべての項目です。一般的に、Macが古く、ダウンロードされたファイルの数が多いほど、リストは大きくなり、クエリの実行にかかる時間も長くなります。
このリストは、ファイルとアプリのファイル検疫をオフにした場合でも機能します。これを検証してくれた inket に感謝します。
ダウンロード履歴リストの削除
ダウンロードしたファイルの包括的な履歴リストを保持したくない場合は、次のコマンドを実行して検疫データベースの内容を削除できます。
sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* 'delete from LSQuarantineEvent'
これを個別に実行することも、.bash_profile または .profile に配置して、新しいターミナル ウィンドウが起動されたときにデータベースを自動的にクリアすることもできます。
これはMac OS Xの多くのバージョンでテスト済みで、以前のバージョンからOS X El Capitan(10.11.x以降)、OS X Yosemite、OS X Mavericks 10.9.5、そしておそらくそれ以降のバージョンまで、引き続き動作します。このコマンドで成功した場合、また使用したOS Xのバージョンをコメント欄でお知らせください。
素晴らしいヒントを提供してくれた Scott に感謝します。また、削除構文を提供してくれた Wiggums にも感謝します。