隙あらば寝る

うぇぶのかいしゃではたらくえんじにあがかいています

du の結果をリアルタイムに表示する dusort を書いた

使用容量の多いディレクトリを探す

mac ツールは色々あるけど有料だったりするし別にGUIで見たいわけではない。

cli だと du -sh * | sort -h あたりが有力。

ただしこれはインクリメンタルに状況を出さないのですぐに結果がでなくて使いにくい。

というとことで、インクリメンタルにソート結果を表示する何かを作れば解決するのではないかと考えてみた。

du の出力は サイズ<タブ>ファイル名 なのでこれをパースして1行毎にソート結果を出力すれば良さそう。

で、dusort という名前をつけて実装してみた。

GitHub - yoru9zine/dusort

リンク先 README にも貼ったが、動作イメージは以下の様な感じ。

https://github.com/yoru9zine/dusort/raw/master/dusort.gif

普通の sort だとすべての結果をソートし終わるまで表示されないが、dusort を使うと都度結果が更新される。

書いた感想

概ね期待通りにできたが、パイプのバッファリング(?)なのか、すぐに結果が出ないことがある。

これについては少し調べてみたものの、制御する方法がよくわからなかった。

あとはそもそも du 出力の先としてでなく、du 相当の実装をしたほうが便利なのではないかという気もする。

削除をサポートしたりとか、今のモデルではやり辛い内容も実装できる。

実装面では出力のライブラリに使った go-termbox がなかなか良かった。

CLI の表示制御をする機会があればまた使ってみたい。