Por que “ls -all” mostra tempo para alguns arquivos, mas apenas um ano para outros?

26

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

    
por Jonathan Kittell 21.10.2015 / 01:27

5 respostas

33

By default, file timestamps are listed in abbreviated form, using a date like ‘Mar 30 2002’ for non-recent timestamps, and a date-without-year and time like ‘Mar 30 23:45’ for recent timestamps. This format can change depending on the current locale as detailed below.

A timestamp is considered to be recent if it is less than six months old, and is not dated in the future. If a timestamp dated today is not listed in recent form, the timestamp is in the future, which means you probably have clock skew problems which may break programs like make that rely on file timestamps.

Fonte: link

Para 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
    
por 21.10.2015 / 01:36
20

O tempo representado é o tempo de modificação. Observe que ls -all é a mesma coisa que ls -l -a , que é diferente de ls --all . Não há razão para usar o dobro l em seu exemplo. Se você quiser ver a hora da modificação de cada arquivo, use ls -al --full-time .

    
por 21.10.2015 / 01:36
6

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

Como afirmado nas outras respostas,

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

Com a opção -l , ls exibe a data / hora de modificação dos arquivos (incluindo diretórios, já que "tudo é um arquivo"), a menos que

  • -c também é especificado e, nesse caso, exibe o horário da mudança ou
  • -u também é especificado e, nesse caso, exibe o tempo de acesso.

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

    
por 21.10.2015 / 01:36
3

Esta saída é ajustada para o conteúdo de informações máximas: quando o tempo está "próximo o suficiente" para o horário atual (não inteiramente certo, mas acredito dentro de seis meses) o ano é eliminado e a hora do dia mostrada. Caso contrário, o ano é exibido. Este é o padrão principalmente porque você provavelmente não se importa tanto com a hora exata do dia que algo foi modificado, se esse tempo for anos atrás. GNU coreutils ls tem a opção --time-style , para controlar isso explicitamente.

    
por 21.10.2015 / 01:36
0

Você percebeu alguma coisa? Apenas aparece a hora do dia 20 de outubro, que é hoje, isso significa que ele mostrará a última vez que você modificou o arquivo, mas, nos outros dias que não são hoje, ele mostrará apenas a data sem o horário. / p>

Acontece que não é isso, como respondeu Thomas. Eu só tentei usar o método de dedução, não tenho certeza de ter uma conclusão correta, afinal.

    
por 21.10.2015 / 01:35

Tags