Come cambio il formato temporale usato dalla linea di comando ls su osx?

23

Voglio rendere ls tempo di visualizzazione in formato ISO (formato militare). Come posso cambiare questo comportamento?

Su Linux sapevo che avrei potuto forzare ls a visualizzare il tempo nel formato lungo usin --full-time ma questo non funziona su OS X.

Aggiornamento: so che il formato utilizzato dal comando è basato sulle impostazioni locale . Il problema è che su OS X non ero in grado di utilizzare il trucco dell'impostazione di LC_TIME=en_DK .

    
posta sorin 02.06.2011 - 15:48
fonte

3 risposte

13

Se installi gnu coreutils, allora è disponibile gnu ls, che farà come richiesto. Se usi brew come gestore di pacchetti, è semplice come:

brew install coreutils
gls -l --time-style=full-iso
    
risposta data 02.06.2011 - 15:55
fonte
9

Il comando integrato di ls di OS X non richiede argomenti di formattazione del tempo, ma il comando stat prende le stringhe di formato strftime in modo da ottenere un'approssimazione di ciò che vuoi facendo:

stat -l -t '%FT%T' *

Il %FT%T produce un timestamp locale ISO8601. Aggiungi un %z se desideri uno scostamento UTC.

Ma mentre il timestamp è giusto, il resto si avvicina solo a quello che otterresti da ls. Ad esempio, ls -l allinea correttamente i campi in colonne, può colorare l'output e ovviamente elenca i contenuti della directory piuttosto che richiedere il passaggio di tutti i nomi di file come argomenti. Puoi almeno riprodurre l'allineamento corretto piping l'output attraverso tr per convertire tutti gli spazi in schede:

stat -l -t '%F%T' * | tr ' ' \t

In alternativa, penso che dovrebbe essere possibile ottenere ls -l per produrre un timestamp ISO8601 definendo un locale personalizzato, ma non l'ho visto fare.

    
risposta data 15.07.2013 - 08:38
fonte
-1

ls -l --time-style=iso funziona bene per me.

    
risposta data 01.03.2013 - 13:19
fonte

Leggi altre domande sui tag