Como posso classificar a saída de 'ls' pela data da última modificação?


Respostas:


1637
ls -t

ou (para reverso, mais recente na parte inferior):

ls -tr

A lspágina do manual descreve isso com mais detalhes e lista outras opções.


312
ls -halté para human readable, show hidden, print details, sort by date.
Evgeni Sergeev 01/10

6
Caso alguém esteja se perguntando, os argumentos -te -rsão especificados na seção sobre lso padrão POSIX , portanto, devem ser compatíveis entre os Unices.
Mark Amery

5
ls -lltpara mostrando data-timestamp juntamente com triagem
Harshul Pandav

4
Sim, é possível #
Ashraf.Shk786

6
@EvgeniSergeev NÃO MEMORIZAR ls -haltum simples erro de digitação pode causar uma falha no servidor! linux.die.net/man/8/halt
Isaac

148

Tente isto: ls -ltr. Dará a você o recente até o final da lista


Eu usei isso para obter a lista de arquivos no meu repositório Git até a data da última edição. ls -alt $(git ls-files -m)Obrigado!
NobleUplift

45

Para uma resposta completa, aqui está o que eu uso: ls -lrth

Coloque isso no seu script de inicialização /etc/bashrce atribua um alias como este: alias l='ls -lrth'Reinicie o seu terminal e você poderá digitar le ver uma longa lista de arquivos.


14
Você também pode ligar source /etc/bashrcse quiser adicioná-lo ao seu repertório durante a execução.
Cwallenpoole

1
Você também pode adicioná-lo em ~/.bash_aliasesapenas para o seu utilizador (pode-se criar o arquivo se ele ainda não existir
Dinei

29

Eu uso em algum momento isso:

find . -type f -mmin -5 -print0 | xargs -0 /bin/ls -tr

ou

find . -type f -mmin -5 -print0 | xargs -0 /bin/ls -ltr

olhar recursivamente sobre quais arquivos foram modificados nos últimos 5 minutos.

... ou agora, com a versão recente do GNU find :

find . -type f -mmin -5 -exec ls -ltr {} +

... e mesmo por não se limitar a arquivos :

find . -mmin -5 -exec ls -ltrd {} +

(observe a -dopção lspara não exibir o conteúdo dos diretórios)

Maneira mais robusta?

Dê uma olhada no meu anser para encontrar e classificar por data de modificação


Recursivamente, você quer dizer que lista todos os arquivos em subdiretórios, já não há uma opção para fazer isso?
Jiggunjer

O @jiggunjer ls -Rltrclassificará por dir e, em seguida, por datas, find -type f -mmin -5 -exec ls -ltr {} +apenas imprimirá os arquivos modificados nos últimos 5 minutos, classificados por data, independentemente da árvore de diretórios!
F. Hauri

Observe que isso não funcionará se a lista de arquivos for muito longa para ser passada como uma chamada de shell para ls( unix.stackexchange.com/a/118200/27186 ) - você verá um monte de arquivos classificados e depois outro monte de arquivos classificados etc., mas a lista inteira não será classificada. Consulte superuser.com/questions/294161/… para classificar listas mais longas com find.
unhammer em 11/09

@unhammer Você está certo, para que isso funcione com segurança, veja o meu anser recente para Unix / Linux encontrar e classificar por data de modificação
F. Hauri

20

Adicionar, acrescentar:

alias lt='ls -Alhtr'

no $homedir/.bashrc


15

Mnemônico

Para não ignore as entradas que começam com .e classificam por data (mais recente primeiro):

ls -at

Para não ignore as entradas que começam com .e inverta a classificação por data (a mais antiga primeiro):

ls -art

Para não ignorar as entradas que começam com ., use um formato de listagem longo e classifique por data (a mais nova primeiro):

ls -alt

Para tamanhos de impressão legíveis por humanos, não ignore as entradas que começam com ., use um formato de listagem longo e classifique por data (a mais nova primeiro) (nota @EvgeniSergeev):

ls -halt

mas tenha cuidado com o último , porque um simples erro de digitação pode causar uma falha no servidor ... (@Isaac note)


14

Encontre todos os arquivos no sistema de arquivos que foram modificados no máximo 3 * 24 horas (3 dias) atrás até agora:

find / -ctime 3

10

Para mostrar as 10 mais recentes classificadas por data, eu uso algo assim:

ls -t ~/Downloads | head -10

ou para mostrar o mais antigo

ls -tr ~/Downloads | tail -10

-lo GIV ls -t head -2e ls -tr | tail -2dá mesmo resultado, a opção (-t / -TR) deve ser mantido fixo e modificou a cauda / cabeça ou vice-versa, modifing ambos é como modyfing nada
DDS

7

Usando apenas comandos Unix muito básicos:

ls -nl | sort -k 8,8n -k 6,6M

Isso funcionou no Linux; a coluna 8 é "n" (numérica), a coluna 6 é "M", mês.

Eu sou novo em sort, então esta resposta provavelmente poderia ser melhorada. Sem mencionar, ele precisa de opções adicionais para lse sortusar registros de data e hora exatos, mas nem todos precisarão disso.


5
Eu suspeito que sua resposta não recebeu nenhum voto positivo porque analisa a saída de ls - veja o argumento canônico contra fazê-lo e esta pergunta sobre não analisar ls
Eponymous
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.