PHP: List files in directory over certain size – sorted
< 1 min read
Reading Time: < 1 minute
Avoids the filesize(): stat failed error and can be run from another directory. Sorts files by size.
This does NOT include an extension filter but the code is there to grab the extension.
$threshold = 75000; // minimum file size to display in bytes $num = 50; // number of files you want to list in the echo $path = "/path/to/file/"; // directory path off of root $dir = "..".$path; $i=0; if ($handle = opendir($dir)) { while (false !== ($file = readdir($handle))) { if (($file != ".") && ($file != "..")) { $filename = $_SERVER["DOCUMENT_ROOT"] . $path.$file; // avoids "filesize(): stat failed" error $info = new SplFileInfo($filename); $ext = $info->getExtension(); // use this to grab extension if you want to filter by file type $size = filesize($filename); if ($size > $threshold) { $kb = formatBytes($size, 1); $big[$i] = array($size,$file,$kb); $i++; } } } closedir($handle); } rsort($big); // sort by size big to small $j=0; while($big[$j] and $j<$num){ $thelist .= '
- ‘.$big[$j][1].’ (‘.$big[$j][2].’)
‘; $j++; } function formatBytes($size, $precision = 2) { $base = log($size, 1024); $suffixes = array(”, ‘Kb’, ‘Mb’, ‘Gb’, ‘Tb’); return round(pow(1024, $base – floor($base)), $precision) .’ ‘. $suffixes[floor($base)]; }
Output
Total files found over bytes :
List of biggest files:
tech