So che il mio file system memorizza il tempo di modifica del file in millisecondi ma non conosco un modo per accedere a tali informazioni tramite PHP. Quando faccio un ls --full-time
vedo questo:Ottieni un lungo elenco di file, ordinati per il tempo di file in * millisecondi *
-rw-r--r-- 1 nobody nobody 900 2012-06-29 14:08:37.047666435 -0700 file1
-rw-r--r-- 1 nobody nobody 900 2012-06-29 14:08:37.163667038 -0700 file2
sto supponendo che i numeri dopo il punto sono i millisecondi.
Così mi rendo conto che potrei semplicemente usare ls
e lo hanno ordina per data di modifica, in questo modo:
$filelist = `ls -t`;
Tuttavia, la directory a volte ha un numero enorme di file e ho notato che ls
può essere abbastanza lento in quelle circostanze.
Quindi, invece, ho utilizzato find
ma non ha un interruttore per ordinare i risultati per ora di modifica. Ecco un esempio di quello che sto facendo ora:
$filelist = `find $dir -type f -printf "%[email protected] %p\n" | sort -n | awk '{print $2}'`;
E, naturalmente, questo non lo fa sort ai millisecondi quindi i file che sono stati creati nello stesso secondo a volte sono elencati in ordine errato.
Perché 'sort -n' non ordina i millisecondi? Sembrerebbe che due timestamp '1341013506.3000000000' e' 1341013506.6000000000' siano ordinati numericamente ancora no? Non riesco a replicare perché la mia macchina non memorizza i tempi dei file ms :) –
@mattedgod: controlla la directory '/ sys /'; sul mio sistema, supporta i tempi di nanosecondo. – sarnold
@sarnold Hmm che è strano, la directory sys è in nanosecondi ma la maggior parte delle directory dei documenti non lo sono. Interessante ... –