简体   繁体   中英

Find most recently added file in current directory

So I got this working locally but it's not working on my server. Is the problem due to me using the scp command to transfer my files up to the server?

Here's my code:

// Local
if ('localhost' == $_SERVER['HTTP_HOST']) {
    $cmd = 'find resume*.pdf -type f -print0 | xargs -0 stat -f "%m %N" |sort -rn | head -1 | cut -f2- -d" "';
// Production
} else {
    $cmd = 'find resume*.pdf -type f -print0 | xargs -0 ls -drt | tail -n 1';
}
$results = exec($cmd);
echo '$results = ' . $results;

Local Output:

$ php -f index.php
$ $results = resume june 2014.pdf

Remote Output:

$ php -f index.php
$ $results = resume_may_2014.pdf

Here's what it looks like when I look at the modification dates of the files on the server. I also can't figure out why they (as in the resume files with the same modification date) are getting ordered this way. It's not like they are sorted by alphabetical, file size, etc.

<!-- language: lang-bash -->
username@username.com [~/www/resume]# ls -lt
total 432
drwxr-xr-x  6 username username   4096 Jun  1 14:05 ./
-rw-r--r--  1 username username    927 Jun  1 14:00 index.php
-rw-r--r--  1 username username   2028 Jun  1 13:55 error_log
-rw-r--r--  1 username username 135855 Jun  1 13:37 resume_may_2014.pdf
-rw-r--r--  1 username username      0 Jun  1 13:37 resume_feb_2014.pdf
-rw-r--r--  1 username username 118698 Jun  1 13:37 resume\ june\ 2014.pdf
drwxr-xr-x  4 username username   4096 Jun  1 13:18 resume\ june\ 2014.pages/
-rw-r--r--  1 username username 135855 May 31 18:59 resume.pdf

Articles Referenced:

Why not do this in PHP?

<?php
$directory = '/path/to/directory';
$filename = null;
if ($handle = opendir($directory)) {
    while (false !== ($entry = readdir($handle))) {
        // if (!is_dir($entry)) { // no directories, only files. (Otherwise exclude directories . and ..)
        if (substr($entry,0,6) == 'resume' && substr($entry,-4) == '.pdf') { // only resume*.pdf
            if ($filename === null || $time < filectime($entry)) { // or use filemtime() for last modified time in stead of last change time
                $time = filectime($entry);
                $filename = $entry;
            }
        }
    }
    if ($filename === null) {
        echo "No files found";
    } else {
        echo "Last changed file is: " . $filename . ". It was last changed at: " . date('r', $time) . ".";
    }
    closedir($handle);
} else {
    echo "Could not open directory";
}
?>

DEMO

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM