Se você emitir o ls -all
comando, 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?
Se você emitir o ls -all
comando, 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?
Respostas:
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
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 l
no seu exemplo. Se você deseja ver a hora da modificação de cada arquivo, pode usar ls -al --full-time
.
ls
o uso normal --time-style=long-iso
pode ser mais útil. --full-time
mostra segundos incluindo nove cifras (!) após o ponto decimal que normalmente não é necessário.
--full-time
implica -l
, então você pode apenas usar ls -a --full-time
.
Se a data / hora que está tentando exibir estiver nos últimos seis meses,
ls
exibirá a data e a hora. Se demorar mais de seis meses - ou se for no futuro - ls
exibe a data e o ano.
Conforme indicado nas outras respostas,
ls -ll
é equivalente a ls -l
, els -all
é equivalente a ls -al
, o que é equivalente a ls -a -l
, ls -l -a
, e ls -la
.Com a -l
opção, ls
exibe 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.
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 ls
tem a --time-style
opção de controlar isso explicitamente.
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.
Aug 6 19:50 .config
, Aug 6 19:48 VNCHOWTO
.
-all
. Observe que o último L é supérfluo, porqueall
nã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.