2009-04-09 13:17:20 +0000 2009-04-09 13:17:20 +0000
1422
1422

Como posso ordenar a produção de 'ls' pela última data modificada?

Como posso ordenar a produção de ls pela última data modificada?

Respostas (10)

1687
1687
1687
2009-04-09 13:20:44 +0000
ls -t

ou (para reverso, mais recente no fundo):

ls -tr

A página ls man descreve isto com mais detalhes, e lista outras opções.

155
155
155
2010-04-06 14:44:45 +0000

Experimente isto: ls -ltr. Ele lhe dará o recente até o final da lista

48
48
48
2012-04-15 20:23:29 +0000

Para uma resposta completa aqui é o que eu uso: ls -lrth

Coloque isto no seu script inicial /etc/bashrc e atribua um pseudónimo como este: alias l='ls -lrth' Reinicie o seu terminal e deverá ser capaz de digitar l e ver uma longa lista de ficheiros.

31
31
31
2013-07-19 11:01:24 +0000

Eu uso um dia isto:

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

para procurar recursivamente sobre quais ficheiros foram modificados nos últimos 5 minutos.

… ou agora, com a versão recente de GNU find:

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

… e mesmo para não se limitar a ficheiros:

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

(note o -d mudar para ls por não mostrar o conteúdo dos directórios)

Forma mais robusta?

Dê uma vista de olhos em my anser to find and sort by date modified

22
22
22
2012-04-15 18:41:06 +0000

Adicionar:

alias lt='ls -Alhtr'

em $homedir/.bashrc

18
18
18
2017-07-26 07:21:37 +0000

Mnemonic

Para não ignorar as entradas a partir de . e classificar por data (o mais recente primeiro):

ls -at

Para não ignorar as entradas a partir de . e classificar por data (o mais antigo primeiro):

ls -art

Para não ignorar as entradas a partir de ., utilize um formato de listagem longa e classificar por data (o mais recente primeiro):

ls -alt

Para imprimir tamanhos legíveis para humanos, não ignore as entradas que começam com ., utilize um formato de listagem longa e classificar por data (o mais recente primeiro) (@EvgeniSergeev note):

ls -halt

mas cautele-se com o último , pois um simples erro de tipo pode causar uma falha do servidor. .. (@Isaac nota)

16
16
16
2013-11-11 16:11:57 +0000

Encontrar todos os ficheiros no sistema de ficheiros que foram modificados no máximo há 3 * 24 horas (3 dias) até agora:

find / -ctime 3
12
12
12
2016-03-06 18:21:16 +0000

Para mostrar os 10 mais recentes classificados por data, uso algo como isto:

ls -t ~/Downloads | head -10

ou para mostrar os mais antigos

ls -tr ~/Downloads | tail -10
9
9
9
2014-06-15 21:47:51 +0000

Usando apenas comandos Unix muito básicos:

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

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

Eu sou novo no sort, por isso esta resposta poderia provavelmente ser melhorada. Para não mencionar que precisa de opções adicionais ao ls e ao sort para usar carimbos de data e hora exactos, mas nem todos vão precisar disto.

-1
-1
-1
2020-02-28 11:04:14 +0000

Uma forma possível de mostrar, por exemplo, os últimos 10 ficheiros modificados é seguindo o comando:

ls -lrth | tail -n 10

Descrição do comando acima:

ls - list

argumentos:

l - long
r - reverse
t - sort by time
h - human readable

depois é encaminhado para o comando tail, que mostra apenas 10 linhas recentes, definidas pelo parâmetro n* (número de linhas)…