我需要找到目录中最旧的文件,所有文件中最古老的文件(包括特定文件夹的目录,子目录)
Folder 1
- dir 1
- dir 1.1
- file 1
- dir 2
- dir 2.1
- file 2
如果文件 2 是最旧的,我需要能够通过传递主目录名称(文件夹 2)来获取最旧的文件(文件 2)
我的解决方案是
function get_oldest_file($dir) {
$filemdate = array();
print $dir.PHP_EOL;
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
$files[] = $file;
print $file.PHP_EOL;
}
foreach ($files as $eachfile) {
if (is_file($dir.eachfile)) {
$file_date[$eachfile] = filemtime($dir.$eachfile);
print $filemdate[$eachfile].PHP_EOL;
}
}
}
closedir($handle);
asort($filemdate, SORT_NUMERIC);
reset($filmdate);
$oldest = key($filemdate);
print "Oldest is : ".$oldest;
return $oldest;
}
echo get_oldest_file("/path/---")
谢谢!
怎么样?
function workerFunction($currentDir, $oldestFile)
foreach (glob($currentDir.'/*') as $file) {
if (is_dir($file)) {
if ((basename($file)!='.') && (basename($file)!='..')) {
$oldestFile = workerFunction($file, $oldestFile);
}
} else {
$mtime = filemtime($file);
if ($mtime <= $oldestFile['mtime']) {
$oldestFile['mtime'] = $mtime;
$oldestFile['path'] = $file;
}
}
}
return $oldestFile;
}
function searchForOldestFile($dir) {
$oldestFile['mtime'] = time();
$oldestFile['path'] = null;
$oldestFile = workerFunction($dir, $oldestFile);
return $olderstFile['path'];
}
我没有用于调试的 PHP 环境,但至少通过一些小修复,它可以根据需要工作。让我解释一下,这样您就可以轻松使用它:搜索最旧的文件函数是脚本应该调用的接口;workerFunction 执行"魔术"(如果它:)工作),$oldestFile保留对当前最旧的文件的引用。