mac ファイル検索サイズで大きい順に洗い出す手順
「mac ファイル検索サイズ」で調べる人の多くは、起動ディスクの空き容量の警告が出た直後にいる。Finderをリスト表示にしてサイズの列をクリックしたのに、いちばん上に出てくるのは数百MBの動画1本で、必要なのは数十GBの空き。しかもフォルダの行はサイズの欄が「--」のまま並んでいる。ここで整理するのは、Finderの並べ替えが何を見せていないのか、ディスク全体から大きいものを絞り込む手順、ターミナルで1行で答えを出す書き方、そして同じフォルダなのに道具によって数字が違う理由の4点だ。
Finderでサイズ順に並べたときに見えていないもの
サイズで並べ替えできるのはリスト表示だけで、並ぶのは「いま開いているフォルダの中身」に限られる。サブフォルダの中までは降りていかない。そしてフォルダの行にサイズが出ないのは不具合ではなく、フォルダの合計を出すには中身を全部読む必要があり、Finderは既定でその計算をしないためだ。
計算させる設定は表示オプションにある。Finderのウインドウを前面にしてCommandとJを押すと開き、すべてのサイズを計算する項目にチェックを入れると、フォルダの欄に実際の数字が入り始める。数字はゆっくり埋まり、ウインドウを開き直すたびに計算し直される。写真ライブラリや複数のリポジトリを抱えたホームフォルダでは、列が落ち着くまで1分以上かかることも珍しくない。
この設定を使うときに知っておきたい癖が2つある。
- 計算はウインドウ単位で有効になる。すべてのウインドウの既定として保存しない限り、別の窓を開けば元の「--」に戻る
- 数字が届くたびに並び順が動く。計算が終わる前に上位を見て判断すると、直後に順位が入れ替わる
もう1つの限界は範囲だ。サイズ順の並べ替えが答えるのは「このフォルダの中で何が大きいか」であって、容量が足りないときに知りたい「このMacのどこが重いか」ではない。後者にはFinderの別の道具を使う。
ディスク全体から大きいファイルを絞り込む
FinderでCommandとFを押すと検索が始まる。検索範囲を「このMac」に切り替え、条件の行の左側のメニューから「その他」を選ぶと、検索できる属性の一覧が開く。ここに「ファイルサイズ」があり、選ぶと「ファイルサイズが次より大きい」という比較の行に変わる。単位はKB、MB、GBから選べる。
しきい値はまず500MBで始め、候補が少なければ100MBまで下げるとちょうどよい。結果はリスト表示でサイズ順に並べ替えられる。今度は並ぶのがファイルなので、全行に実数が入る。条件の行を1つ足して「最後に開いた日」で絞ると精度が上がる。先週開いた2GBのファイルは仕事中の素材で、2023年に最後に開いた2GBのファイルは削除の候補だからだ。
この検索は保存できる。検索ウインドウの保存ボタンを押すと保存済みの検索(スマートフォルダ)になり、開くたびに条件を実行し直す。中身の複製ではなく条件の保存なので、置いておいても容量を食わない。
macOSが自前で持っている一覧もある。システム設定の一般からストレージを開くと、種類別の内訳と、書類の項目の中に「大きいファイル」の一覧が出る。対象はホームフォルダの範囲だが、何も入力せずに上位の重いファイルを見るならこれがいちばん速い。
ターミナルなら1行で答えが出る
ターミナルが使える人は、同じ問いに数十秒で答えを出せる。フォルダの中まで降りて集計してくれるからだ。中心になるのはduで、指定した階層がディスクをどれだけ使っているかを表示する。
深さを1に制限してホームフォルダに当て、結果を人が読める数値としてsortに渡すと、重いディレクトリが出力の下側にまとまる。
du -h -d 1 ~ | sort -h | tail -20
用途が違う書き方が3つある。
du -sh * | sort -hは、いま開いているフォルダの直下だけを集計するfind ~ -type f -size +500Mは、指定した場所から下にある大きいファイルを1つずつ挙げる。Finderの検索と同じ考え方になるmdfind 'kMDItemFSSize > 1000000000'はSpotlightの索引に問い合わせるので、ディスクを歩かずに即座に返る
実務での差は所要時間と網羅性だ。duはディスクを実際に歩くので大きなホームフォルダでは数分かかり、読み取りの権限が要る。ターミナルにフルディスクアクセスを与えていないと、読めなかった領域が黙って集計から抜ける。Spotlightは1秒で返るが、索引から除外された場所は見えない。両方を走らせて突き合わせると、片方だけでは見つからなかった重いディレクトリが出てくることがある。
同じフォルダなのに数字が食い違う理由
Finderでは12GB、duでは11GBと出る。これは不具合ではなく、原因は主に4つに整理できる。
1つ目は測っているものの違いだ。Finderは中身の論理的な大きさを足し上げる。duはディスク上で実際に使われているブロックを数える。duのマニュアルには、その逆の測り方を選ぶ項目が用意されている。
-A Display the apparent size instead of the disk usage. This can be helpful when operating on compressed volumes or sparse files. 出典: macOS に同梱される du(1) のマニュアル(developer.apple.com)
2つ目はAPFSの複製だ。同じボリュームの中でファイルをコピーすると、データは複製されずブロックが共有される。どちらかを書き換えるまで実体は1つなので、2つのフォルダがそれぞれ5GBと表示されても、合計の占有はそれほど増えない。
3つ目は手元に実体が無いファイルだ。iCloud Driveの最適化を有効にしていると、表示上は元の大きさのまま、ローカルにはほぼ何も置かれていない状態になる。消しても空き容量は増えず、同じアカウントの他の端末からも消える。
4つ目は解放できる領域(パージ可能領域)だ。Time Machineは起動ボリュームにローカルのスナップショットを残し、macOSはその分を必要に応じて回収できる領域として数える。20GB消したのに空きが数GBしか動かない、あるいは何もしていない翌朝に空きが増えている、という現象はここから来る。
| 知りたいこと | 最短の経路 | サブフォルダを見るか | 注意点 |
|---|---|---|---|
| このフォルダで何が大きいか | Finderのリスト表示のサイズ列 | 見ない | フォルダは計算させないと「--」 |
| このMac全体で大きいファイル | Finderの検索のファイルサイズ条件 | 見る | 出るのはファイルのみ |
| どのディレクトリが重いか | duで深さを1に制限 | 見る | 権限が要る。数分かかる |
| あの巨大なファイルの場所 | mdfindでファイルサイズを指定 | 見る | 索引のある場所だけ |
| macOSが自力で減らせる分 | システム設定のストレージ | 見る | ホームフォルダの範囲 |
なお、単位の数え方も食い違いの元になる。macOSの表示は1GBを10億バイトとして計算する10進の数え方で、duの人が読める表示は1,024を単位にした2進の数え方だ。同じファイルでも表示が数パーセントずれるのはこのためで、どちらかが間違っているわけではない。数GB規模の話をしているときは、この差を追いかけても得るものはない。
見つけた1本を消す前に確認すること
走査で上位に出たファイルを、名前だけ見て消すのは危ない。拡張子が同じでも、書き出しの控えなのか作業中の素材なのかは名前からは分からないことが多い。確認の手順は3つに絞れる。
- Finderで選んでスペースキーを押すとクイックルックで中身が見える。動画も音声も再生でき、開くアプリを起動するより速い
mdlsにパスを渡すと、撮影日、作成したアプリ、解像度といったメタデータが一覧で出る。素材の出どころを確かめるのに向くlsofにパスを渡して何も返らなければ、そのファイルはいま開かれていない。書き出し中の中間ファイルを消してしまう事故を防げる
もう1つ、最後に開いた日を見る癖を付けておくと判断が速くなる。Finderのリスト表示は表示オプションから「最後に開いた日」の列を足せる。半年以上開いていない大きなファイルは、消す候補というより、外付けに移す候補として扱うのが安全だ。
消してよいものと、消すと戻らないもの
仕事で使っているMacを走査すると、出てくる顔ぶれはだいたい決まっている。開発機ならnode_modules、Xcodeの中間生成物やシミュレータ、コンテナのディスクイメージ、パッケージ管理の取得済みアーカイブ。制作機なら動画の中間ファイル、書き出しの控え、写真ライブラリのプレビュー。
判断の軸は大きいか小さいかではなく、作り直せるかどうかに置く。キャッシュや中間生成物は次のビルドが遅くなるだけで戻ってくる。撮影した素材、他に控えの無い書き出し、状態を抱えた仮想ディスクは戻らない。走査結果をこの2つに仕分ける作業は5分で終わり、取り返しのつかない1件を防げる。
機械的な注意も2つある。ゴミ箱に入れただけでは容量は空かない。空にするまで数字は動かない。もう1つは、写真ライブラリのようなパッケージの中に手を入れて中身を消す方法で、これはライブラリを壊す側に働きやすい。パッケージはそれを管理しているアプリの中から減らすのが筋になる。
迷うものは、測る、外付けに移す、1週間ふつうに仕事をする、それから消す、の順にすると事故が起きにくい。1週間動かして誰も困らなかったものは、消しても困らない可能性が高い。逆に、この1週間の間に「あのファイルはどこへ行った」と探し始めたなら、それは消してはいけない側だったという答えがその場で出る。判断に迷う時間より、移して待つ1週間のほうが安く付く。
外付けに移すときは、コピーではなく移動にして、元の場所には何も残さないことが大切だ。控えのつもりで両方に残すと、次に容量が足りなくなったときに同じファイルをもう一度精査することになる。移した先のフォルダ名に日付を入れておけば、半年後に「これは何のために取ってあるのか」を思い出す手がかりになる。
探す窓と消す窓を、何回行き来しているか
この作業が毎回つらいのは、知識が足りないからではない。走査はターミナル、判断はファイルの一覧、削除はまた一覧、という往復が発生するからだ。duの出力に並んだ20行を、フォルダの窓で1つずつ探し直している時間が、実は作業時間の大半を占める。往復のたびに手元のリストは薄れていくが、そのリストこそがこの作業の成果物だ。
ここに効くのは、より速いコマンドではなく、窓の数を減らすことだ。フォルダとターミナルとAIが同じ窓にある形なら、集計の結果を見ながら同じ画面で対象を選び、そのまま処理に移せる。作業ディレクトリが共有されているぶん、どのパスの話をしているのかを人間が覚えておく必要も減る。実際にどこまで同じ窓で完結するかはできることにまとまっており、従来のファイル管理アプリとの構造の違いは他のファイル管理との比較で並べて確認できる。
もう1つ、容量の整理は月に1度で足りる種類の仕事だ。1GB超の保存済み検索を1つ作り、duの1行にエイリアスを付けておけば、次回の所要時間は30秒まで縮む。道具を増やす前に、この2つを先に用意しておくほうが効く。導入の費用感を先に知りたい場合は料金に条件が整理されている。
よくある質問
Finderでフォルダのサイズが「--」のままなのはなぜですか?
Finderは既定ではフォルダの合計を計算しないためです。中身を全部読む必要があり、時間がかかるからです。リスト表示のウインドウでCommandとJを押して表示オプションを開き、すべてのサイズを計算する項目にチェックを入れると数字が入り始めます。設定はウインドウ単位なので、すべてのウインドウの既定として保存しないと他の窓には反映されません。
ディスク全体から1GB以上のファイルだけを探すにはどうしますか?
FinderでCommandとFを押し、検索範囲を「このMac」にします。条件の行のメニューから「その他」を選んで「ファイルサイズ」を追加し、「次より大きい」を1GBに設定します。結果はリスト表示でサイズ順に並べ替えられ、保存ボタンでスマートフォルダにしておけば次回は開くだけで再実行されます。
20GB消したのに空き容量がほとんど増えません。原因は何ですか?
よくあるのは3つです。ゴミ箱に入れたままで空にしていない場合、APFSの複製でブロックを共有していて実体が減っていない場合、そしてTime Machineのローカルスナップショットがパージ可能領域として残っている場合です。3つ目は必要になったときにmacOSが自動で回収するため、時間差で空きが増えることもあります。
duとFinderで表示が違うとき、どちらが正しいですか?
どちらも別のものを正しく測っています。Finderは中身の論理的な大きさ、duはディスク上で実際に使われているブロックです。圧縮されたファイル、スパースファイル、複製されたファイルで差が出ます。duに見かけ上の大きさを表示する項目を付けると、2つの数字は近づきます。