void_set Posted July 14, 2015 Share Posted July 14, 2015 Hello how can i modify this script to search in all subdirectories to get only one new directory? THX! This little script only search in current $path for newest directory but i also need to search in all subdirectories <?php function getNewestDir($path) { $working_dir = getcwd(); chdir($path); ## chdir to requested dir $ret_val = false; if ($p = opendir($path) ) { while (false !== ($file = readdir($p))) { if ($file{0} != '.' && is_dir($file)) { $list[] = date('YmdHis', filemtime($path.'/'.$file)).$path.'/'.$file; } } rsort($list); $ret_val = $list[0]; } chdir($working_dir); ## chdir back to script's dir return $ret_val; } ?> Link to comment https://forums.phpfreaks.com/topic/297284-search-for-newest-directory/ Share on other sites More sharing options...
Barand Posted July 14, 2015 Share Posted July 14, 2015 Using a similar function but making it recursive to search the directory tree. $dt = 0; $latestfile = ''; $latestdir = ''; $startDir = 'c:/inetpub/wwwroot'; // set start of search newestDir($startDir, $dt, $latestfile, $latestdir); // call search function echo "$latestdir/$latestfile : " . date('Y-m-d H:i:s', $dt); // output lastest dir/file function newestDir($dir, &$dt, &$latestfile, &$latestdir) { if ($p = opendir($dir) ) { while (false !== ($file = readdir($p))) { if ($file=='.' || $file=='..') continue; if (!is_dir("$dir/$file")) { if (($ft = filemtime("$dir/$file")) > $dt) { $dt = $ft; $latestdir = $dir; $latestfile = $file; } } else { newestDir("$dir/$file", $dt, $latestfile, $latestdir); } } } closedir($p); } Link to comment https://forums.phpfreaks.com/topic/297284-search-for-newest-directory/#findComment-1516295 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.