ディレクトリ下のファイル容量のディスクの空き容量を占める割合を出力する。
(defun du (path &optional recursivep) (labels ((fol (b p) (/ b (expt #1=1024 p))) (approx (b) (let ((tb (truncate (if (zerop b) 0 (log (* b 0.9) #1#)))) (pm "KMGTPEZY")) (format nil "~,1F~AB" (fol b tb) (if (zerop tb) nil (if (> tb (length pm)) #\Y (char pm (1- tb))))))) (res (n d) (if (zerop d) 0 (/ n 1/100 d)))) (multiple-value-bind (bs all vac use fs dirs files) (get-disk-usage path recursivep) (format t "~A 容量:~A 空き:~A(~,1F%)~%~A ~Aファイル ~A~%全体の~4F%~%" (or (pathname-device path) (pathname-host path)) (approx all) (approx vac) (res vac all) path files (approx use) (res fs all)))))
get-disk-usageの簡単な表示系。
と、こんなものを作ってる場合ではなかった><