Questo sembra essere un caso classico di funzionalità non standard su varie piattaforme.Il modo migliore per ottenere il tempo di modifica dei file in secondi
Semplicemente, voglio un metodo universalmente (o almeno ampiamente supportato) per ottenere il tempo modificato di un file come un timestamp unix in secondi.
Ora conosco vari modi per farlo con stat
ma la maggior parte sono specifici della piattaforma; ad esempio stat -c %Y $file
funziona per alcuni, ma non funzionerà su OS X (e presumibilmente altri sistemi FreeBSD) che utilizza invece stat -f %m $file
.
Allo stesso modo, alcune piattaforme supportano date -r $file +%s
, tuttavia OS X/FreeBSD ancora una volta non fa come l'opzione -r
sembra essere solo un supplente per utilizzare +%s
per ottenere un timestamp Unix, piuttosto che l'opzione di file di riferimento come su altre piattaforme.
L'altra alternativa che ho familiarità è utilizzare find
con l'opzione -printf
, ma ancora non è ampiamente supportato. L'ultimo metodo che conosco è l'analisi di ls
che, oltre a essere una cosa spiacevole da fare, non è qualcosa su cui credo possa (o almeno dovrebbe) fare affidamento.
Quindi, esiste un metodo più compatibile per ottenere il tempo di modifica di un file? Attualmente sto solo lanciando diverse variazioni di stat
in uno script e eseguendole fino a quando non si esce con uno stato pari a zero, ma questo è tutt'altro che ideale, anche se memorizzo in cache il comando correttamente eseguito prima in futuro.
Non posso davvero fascio nulla; l'obiettivo è quello di avere un semplice script di shell che dovrebbe essere eseguito su quasi tutti i sistemi operativi unix-y. Il problema è che ho bisogno di includere ambienti come le scatole NAS, che potrebbero non includere Python o Perl. Non c'è davvero un modo migliore per farlo in una shell? – Haravikk