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?
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.
É 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.
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.
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.
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.
-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.Respostas:
Fonte: http://www.gnu.org/software/coreutils/manual/coreutils.html#Formatting-file-timestamps
Ilustrar:
fonte
A hora representada é a hora da modificação. Observe que
ls -all
é a mesma coisa quels -l -a
, diferente dels --all
. Não há razão para usar o dobrol
no seu exemplo. Se você deseja ver a hora da modificação de cada arquivo, pode usarls -al --full-time
.fonte
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 usarls -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 als -l
, els -all
é equivalente als -al
, o que é equivalente als -a -l
,ls -l -a
, els -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.
fonte
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.fonte
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.
fonte
Aug 6 19:50 .config
,Aug 6 19:48 VNCHOWTO
.