【Mac】データサイズの大きい順にフォルダを並べる

Mac の SSD の容量が残り少なくなってきたとして、まず考えるのがサイズの大きいファイルの削除である。
 ちまちまと大きなファイルを捜して、いちいち削除しても埒があかない。
 デカいファイルがいっぱい入ったフォルダを、丸ごとざっくり削除しちまったほうが捗るだろう。

そういう目的のためのソフトウェアがけっこうある。

🔗 Macアプリ「DaisyDisk」ディスクの使用状況を階層構造に可視化・削除 | PC設定のカルマ

上記リンクでレビューされているアプリなどはおすすめだ。
 今回は、標準機能だけでデカいサイズのフォルダを捜せないか試したい。

サイズの大きい順に並べ替える

いつの頃からか忘れたが、Mac の Finder は、ファイルをサイズ順にソートできるようになった。これなら、ドデカいフォルダを見つけられそうだ。
 やり方は簡単で、ツールバーの並べ替えアイコンから「サイズ」を選択するだけだ。

リスト表示にして、「サイズ」項目をクリックしても、同じような結果が返ってくる。

これはこれで便利だ。が、ファイルしか並べ替えてくれない。
 なんでか知らないが、フォルダは並べ替えてくれないのである。

du コマンド

そんな時はとっととシェルスクリプトだ。
 du コマンドを使えばフォルダのサイズを調べられるはず。

du コマンドは下記のサイト様を参考にさせていただきました。

🔗 Linuxコマンド【 du 】ファイルのディスク使用量を表示 – Linux入門 – Webkaru

du コマンドはファイルのディスク使用量を表示してくれるコマンドだ。
 単純にdu ディレクトリで内包しているファイルのサイズと、最後にフォルダ内のファイルのサイズの合計を返してくれる。フォルダでなく、ファイルを指定してもいい。

[>_ ] > du 倉庫
32    倉庫/フォント/k-font/mplus-TESTFLIGHT-058
8552    倉庫/フォント/k-font
672    倉庫/フォント/inconsolata-g_font
……中略……
2921032    倉庫

-sオプションで、フォルダのサイズのみを表示する。

[>_ ] > du -s 倉庫
2921032    倉庫

-hオプションをつければ、サイズの単位を馴染み深いキロバイト、メガバイトなどで表示してくれる。

[>_ ] > du -sh 倉庫
1.4G    倉庫

なかなかいい感じだ。
 こんな感じのシェルスクリプトを考えてみた。

シェルスクリプト

📝 dirsize.sh

#!/bin/zsh
# dirsize.sh path/to/directory

cd $1
du -s * | sort -gr | sed -e 's/^[0-9]*\t//g' | while read line
do
    if test -d "${line}"; then
        du -sh "${line}"
    fi
done

sort コマンドは下記のサイト様を参考にさせていただきました。

🔗 sortコマンドについて詳しくまとめました 【Linuxコマンド集】

データサイズの大きい順にフォルダ名を表示する、というスクリプトだ。
 dirsize.sh フォルダのパスというふうに引数をつけて使う。
 実行結果はこんな感じ。

[>_ ] > dirsize.sh ~/Movies
 11G    エロいの
364M    4K Video Downloader
4.3M    iMovieライブラリ.imovielibrary
260K    TV
8.0K    iMovie Theater.theater
  0B    Motion Templates.localized

どのフォルダを削除すべきか、一目瞭然というわけである。