簡體   English   中英

從目錄結構年/月/日/時獲取最新文件

[英]Get the newest file from directory structure year/month/date/time

我將數據庫的備份存儲在目錄結構中

年/月/日/時間/ backup_name

一個例子是

basics_mini / 2012/11/05/012232 / RATIONAL.0.db2inst1.NODE0000.20110505004037.001 basics_mini / 2012/11/06/012251 / RATIONAL.0.db2inst1.NODE0000.20110505003930.001

請注意,無法使用備份文件中的時間戳。 在自動化測試開始之前,服務器時間設置為5.5.2011

所以問題是如果我將“基本目錄”(basics_mini)傳遞給我要編寫的某個函數,我將如何獲取最新文件。 我的想法是,我列出了基本目錄,並按時間排序以獲得年份。 然后我會按月,日和時間做同樣的事情。

我想知道在php中是否有任何“更容易”的解決方案。

那么,您可以立即獲取整個目錄樹並從中獲取最后一個元素:

$baseFolder = './backup_mini' ;

$arr = glob("{$baseFolder}/*/*/*/*", GLOB_ONLYDIR);
$lastDir = array_pop($arr);

我不知道任何非常簡單的單行,但看起來可能會有所幫助:

$files = array();
$flags = FilesystemIterator::CURRENT_AS_SELF;
$dir = new RecursiveDirectoryIterator('/path/to/basics_mini', $flags);
foreach ($dir as $path) {
    if ($path->isFile()) {
        $files[$path->getPath()] = $path->getFilename();
    }
}

ksort($files);

您可能希望使用RecursiveDirectoryIterator因為您的目錄結構稍微復雜一些。
FilesystemIterator常量也很有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM