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