Perché "ls -all" mostra il tempo per alcuni file ma solo l'anno per altri?


32

Se si emette il ls -allcomando alcuni file o directory hanno l'anno e alcuni hanno il tempo? Perché alcuni mostrano l'anno, mentre altri mostrano l'ora? Il tempo è rappresentativo dell'ora in cui il file è stato creato?

inserisci qui la descrizione dell'immagine


15
Stai usando -all. Nota che l'ultima L è superflua, perché allnon sta per la parola "tutto" ma per -a(mostra tutti i file) e -l(formato elenco lungo). Tutti insieme, ls -alè lo stesso di quello che stai usando.
fedorqui,

Risposte:


35

Per impostazione predefinita, i timestamp dei file sono elencati in forma abbreviata, utilizzando una data come "30 marzo 2002" per i timestamp non recenti e una data senza anno e l'ora come "30 mar 23:45" per i timestamp recenti. Questo formato può cambiare in base alle impostazioni internazionali correnti, come indicato di seguito.

Un timestamp è considerato recente se ha meno di sei mesi e non è datato in futuro. Se un timestamp datato oggi non è elencato in forma recente, il timestamp è in futuro, il che significa che probabilmente hai problemi di inclinazione dell'orologio che potrebbero interrompere i programmi come fare affidamento sui timestamp dei file.

Fonte: http://www.gnu.org/software/coreutils/manual/coreutils.html#Formatting-file-timestamps

Illustrare:

$ for i in {1..7}; do touch -d "$i months ago" file$i; done
$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Sep 21 02:38 file1
-rw-r--r-- 1 terdon terdon 0 Aug 21 02:38 file2
-rw-r--r-- 1 terdon terdon 0 Jul 21 02:38 file3
-rw-r--r-- 1 terdon terdon 0 Jun 21 02:38 file4
-rw-r--r-- 1 terdon terdon 0 May 21 02:38 file5
-rw-r--r-- 1 terdon terdon 0 Apr 21  2015 file6
-rw-r--r-- 1 terdon terdon 0 Mar 21  2015 file7

4
Vale la pena notare che i tempi in futuro mostreranno anche l'anno piuttosto che il tempo. Ciò può accadere se si scambiano file tra host in cui l'orologio non è sincronizzato.
Kasperd,

24

Il tempo rappresentato è il tempo di modifica. Si noti che ls -allè la stessa cosa ls -l -a, che è diversa da ls --all. Non c'è motivo di usare double lnel tuo esempio. Se vuoi vedere il tempo di modifica per ogni file, puoi usare ls -al --full-time.


4
In GNU lsper un uso normale --time-style=long-isopotrebbe essere più utile. --full-timemostra i secondi tra cui nove cifre (!) dopo il punto decimale che normalmente non è necessario.
pabouk,

1
--full-timeimplica -l, quindi potresti semplicemente usare ls -a --full-time.
Kasperd,

6

Se la data / ora che sta tentando di visualizzare è negli ultimi sei mesi, lsvisualizza la data e l'ora. Se è più lungo di sei mesi - o se è in futuro - lsvisualizza la data e l'anno.

Come indicato nelle altre risposte,

  • ls -llè equivalente a ls -l, e
  • ls -allè equivalente a ls -al, che è equivalente a ls -a -l, ls -l -ae ls -la.

Con l' -lopzione, lsvisualizza la data / ora di modifica dei file (comprese le directory, poiché "tutto è un file"), a meno che

  • -c è anche specificato, nel qual caso visualizza l'ora di cambio, oppure
  • -u è anche specificato, nel qual caso visualizza il tempo di accesso.

Vedi ls (1) per maggiori informazioni.


3

Questo output è ottimizzato per il massimo contenuto di informazioni: quando il tempo è "abbastanza vicino" all'ora corrente (non del tutto sicuro, ma suppongo che entro sei mesi) l'anno viene eliso e viene invece mostrata l'ora del giorno. Altrimenti, viene mostrato l'anno. Questo è il valore predefinito principalmente perché probabilmente non ti interessa molto del momento esatto in cui qualcosa è stato modificato, se quel tempo è stato anni fa. I coreutils GNU lshanno la --time-stylepossibilità di controllarlo esplicitamente.


0

Hai realizzato qualcosa? Apparirà solo l'ora del 20 ottobre, che è oggi, ciò significa che mostrerà l'ultima volta che hai modificato il file, ma, in altri giorni che non lo sono oggi, mostrerà solo la data senza l'ora.

Si scopre che non è questo, come ha risposto Thomas. Ho appena provato a usare il metodo della detrazione, non ho la certezza di avere una conclusione corretta dopo tutto.


1
Aug 6 19:50 .config, Aug 6 19:48 VNCHOWTO.
G-Man dice 'Reinstate Monica' il

Perfetto, ho appena fatto una deduzione guardando le date e collegando i punti, che non può essere sempre una conclusione perfetta.
Rafael Campos Nunes,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.