ディスクの中にあるディレクトリをサイズ順に並べるPHPスクリプト

セーフモードが有効だと多分動きません。

<?php

exec('du -Sh /', $return);

foreach ($return as $data) {
	$data2 = explode("\t", $data);
	
	$size = $data2[0];
	$unit = substr($size, -1);
	$size = substr($size, 0, -1);
	
	switch ($unit) {
		case 'G':
			$size2 = $size * 1000 * 1000;
			break;
		case 'M':
			$size2 = $size * 1000;
			break;
		default:
			$size2 = $size;
			break;
	}
	
	$sizeList[] = array($size2, $data2[0], $data2[1]);
}


usort($sizeList, 'sort_for_number');

var_dump($sizeList);

function sort_for_number($a, $b) {
	return ($a[0] < $b[0]) ? TRUE : FALSE;
}

こんな感じで表示される。膨大な量が出てくるはずなのでmoreとかlessとかを繋げといたほうが良さげ。

array(25543) {
  [0]=>
  array(3) {
    [0]=>
    float(5300000)
    [1]=>
    string(4) "5.3G"
    [2]=>
    string(14) "/var/lib/mysql"
  }
  [1]=>
  array(3) {
    [0]=>
    float(1700000)
    [1]=>
    string(4) "1.7G"
    [2]=>
    string(9) "/home/xxx"
  }
  [2]=>
  array(3) {
    [0]=>
    float(1100000)
    [1]=>
    string(4) "1.1G"
    [2]=>
    string(41) "/home/www/xxx.xxx.com/logs/20120214"
  }
  [3]=>
  array(3) {
    [0]=>
    int(678000)
    [1]=>
    string(4) "678M"
    [2]=>
    string(32) "/home/www/xxxx.xxx.com/logs"
  }
  [4]=>
  array(3) {
    [0]=>
    int(417000)
    [1]=>
    string(4) "417M"
    [2]=>
    string(34) "/home/www/xxxxx.xxx.com/logs"
  }
...(以下略)