Por que "ls -all" mostra o tempo de alguns arquivos, mas apenas o ano de outros?

32

Se você emitir o ls -allcomando, alguns arquivos ou diretórios têm o ano e outros têm o tempo? Por que alguns mostram o ano, enquanto outros mostram o tempo? A hora é representativa da hora em que o arquivo foi criado?

insira a descrição da imagem aqui

Jonathan Kittell
fonte
15
Você está usando -all. Observe que o último L é supérfluo, porque allnão representa a palavra "todos", mas sim -a(mostra todos os arquivos) e -l(formato de listagem longa). Todos juntos, ls -alé o mesmo que você está usando.
Fedorqui

Respostas:

35

Por padrão, os registros de data e hora do arquivo são listados de forma abreviada, usando uma data como '30 de março de 2002' para registros de data e hora não recentes e uma data sem ano e hora como '30 de março de 23:45' para registros de data e hora recentes. Esse formato pode mudar dependendo do código do idioma atual, conforme detalhado abaixo.

Um registro de data e hora é considerado recente se tiver menos de seis meses e não for datado no futuro. Se um registro de data e hora datado hoje não estiver listado na forma recente, o registro de data e hora será no futuro, o que significa que você provavelmente terá problemas de inclinação do relógio que podem interromper programas como tornar dependentes dos registros de data e hora do arquivo.

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

Ilustrar:

$ 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
Thomas Weinbrenner
fonte
4
É importante notar que os tempos futuros também mostrarão o ano e não o tempo. Isso pode acontecer se você trocar arquivos entre hosts nos quais o relógio não está sincronizado.
kasperd
24

A hora representada é a hora da modificação. Observe que ls -allé a mesma coisa que ls -l -a, diferente de ls --all. Não há razão para usar o dobro lno seu exemplo. Se você deseja ver a hora da modificação de cada arquivo, pode usar ls -al --full-time.

Kira
fonte
4
No GNU, lso uso normal --time-style=long-isopode ser mais útil. --full-timemostra segundos incluindo nove cifras (!) após o ponto decimal que normalmente não é necessário.
Pabouk
1
--full-timeimplica -l, então você pode apenas usar ls -a --full-time.
kasperd
6

Se a data / hora que está tentando exibir estiver nos últimos seis meses, lsexibirá a data e a hora. Se demorar mais de seis meses - ou se for no futuro - lsexibe a data e o ano.

Conforme indicado nas outras respostas,

  • ls -llé equivalente a ls -l, e
  • ls -allé equivalente a ls -al, o que é equivalente a ls -a -l, ls -l -a, e ls -la.

Com a -lopção, lsexibe a data / hora da modificação dos arquivos (incluindo diretórios, pois "tudo é um arquivo"), a menos que

  • -c também é especificado; nesse caso, ele exibe o horário de alteração ou
  • -u também é especificado; nesse caso, ele exibe o tempo de acesso.

Veja ls (1) para mais informações.

G-Man Diz 'Reinstate Monica'
fonte
3

Essa saída é ajustada para obter o máximo de informações: quando a hora é "próxima o suficiente" da hora atual (não tenho muita certeza, mas acho que dentro de seis meses) o ano é eliminado e a hora do dia é mostrada. Caso contrário, o ano é mostrado. Esse é o padrão principalmente porque você provavelmente não se importa tanto com a hora exata do dia em que algo foi modificado, se esse horário for anos atrás. O GNU coreutils lstem a --time-styleopção de controlar isso explicitamente.

Tom Hunt
fonte
0

Você já percebeu alguma coisa? Aparece apenas a hora no dia 20 de outubro, que é hoje, significa que ele mostrará a última vez que você modificou o arquivo, mas, em outros dias que não são hoje, mostrará apenas a data sem a hora.

Acontece que não é isso, conforme respondido por Thomas. Eu apenas tentei usar o método de dedução, não tenho certeza de ter uma conclusão correta, afinal.

Rafael Campos Nunes
fonte
1
Aug 6 19:50 .config, Aug 6 19:48 VNCHOWTO.
G-Man diz 'Reinstate Monica'
Perfeito, fiz uma dedução observando as datas e conectando os pontos, o que nem sempre pode ser uma conclusão perfeita.
Rafael Campos Nunes