Classificando por data

17

Original:

Jan 23 2011 10:42 ALGO 2007.12.20.avi
26 de junho de 2009 ALGO 2009.06.25.avi
12 de fevereiro de 2010 ALGO 2010.02.11.avi
Jan 29 2011 09:17 ALGO 2011.01.27.avi
11 de fevereiro de 2011 20:06 ALGO 2011.02.10.avi
27 de fevereiro de 2011 23:05 ALGO 2011.02.24.avi

Resultado:

27 de fevereiro de 2011 23:05 ALGO 2011.02.24.avi
11 de fevereiro de 2011 20:06 ALGO 2011.02.10.avi
Jan 29 2011 09:17 ALGO 2011.01.27.avi
Jan 23 2011 10:42 ALGO 2007.12.20.avi
12 de fevereiro de 2010 ALGO 2010.02.11.avi
26 de junho de 2009 ALGO 2009.06.25.avi

Eu gerei a lista acima (Original) com:

ls -A -lR | grep "^-" | sed "s/.\{43\}/&\n/" | grep -v "^-" | while read ONELINE; do if echo $ONELINE | cut -d " " -f3 | grep -o '[0-9][0-9]:[0-9][0-9]' > /dev/null 2>&1; then echo $ONELINE | sed "s/.\{7\}/&$(date +%Y) /"; else echo $ONELINE; fi; done

Como eu pude obter a saída onde o arquivo mais recente está no topo?

LanceBaynes
fonte
2
@ user4724: como você gerou a lista?
@ user4724: Isso não gera o mesmo tipo de outpout para mim que você tem - não importa como Gilles tem a resposta

Respostas:

21

Na maioria dos escritórios, lstem uma -topção. Na manpágina da minha caixa Debian:

-t ordenar por tempo de modificação

Tente o seguinte comando:

$ ls -lt

Alexander Pogrebnyak
fonte
eu preciso dele de forma recursiva, desculpe
LanceBaynes
+ ls -lt listará um diretório completo, se 1 arquivo for alterado.
LanceBaynes
14

É um arquivo de texto que você está tentando classificar ou está tentando exibir uma listagem de diretórios por data? Para o último, use o -tsinalizador parals . Para o primeiro, veja em particular o -Msinalizador para classificação GNU, que classifica por abreviaturas de nome com três letras no mês. O comando a seguir classifica pelas 3ª, 1ª, 2ª e 4ª colunas, tratando a segunda chave de classificação como um nome de mês.

sort -k 3 -k 1M -k2 -k4 in.txt

Considere sempre usar datas no estilo japonês / ISO, sempre na ordem AAAA-MM-DD-HH-MM-SS (ou seja, primeiro, a largura da coluna constante mais significativa). Dessa forma, a classificação por data é idêntica a uma classificação lexicográfica.

Gilles 'SO- parar de ser mau'
fonte
Não se esqueça dos zeros à esquerda nessa sugestão de formato de data. Esse é o formato que eu uso sempre que formato a sequência.
Stolenmoment 26/05
@stolenmoment Você pode usar espaços em vez de zeros se não se importa com espaços, o ponto importante é uma coluna constante com. 2018  5 26funciona tão bem quanto 2018 05 26(desde que você não faça uma marcação que mescla espaços consecutivos ...), o que não funciona bem é 2018 5 26.
Gilles 'SO- stop be evil'
Sim, evito reflexivamente espaços nos nomes de arquivos, tenho certeza que você pode adivinhar o porquê.
Stolenmoment 26/05
3

Eu não tenho certeza se a funcionalidade estava no lscomando quando a pergunta original foi questionado, mas agora você pode usar a opção --full-time.

por exemplo,

ls -t --full-time 

classificará com o tempo mais antigo na parte inferior; ou se você usar:

ls -tr --full-time

então ele reverterá a ordem.

Bevan Thomas
fonte
A questão é sobre como classificar o arquivo por data / hora da modificação. A -topção responde a essa pergunta completamente; --full-timenão é realmente relevante.
G-Man diz 'Restabelecer Monica'
A única coisa -t opção não fornece o ano para arquivos modificados dentro de seis meses, enquanto que --full-time fornece exatamente isso. Você também pode usar o estilo de hora para formatar um formato de data que desejar. por exemplo, ls -ltr - time-style +% Y-% m-% d \% H:% M:% S
Bevan Thomas
Não sei ao certo qual é o seu ponto.  ls -ttambém não fornece o modo e o proprietário dos arquivos, o nome do host e a versão do sistema operacional ou o preço do chá na China.  ls -tnem sequer exibe a data da modificação. Mas a pergunta não é sobre a exibição de informações de arquivos, é sobre a classificação de arquivos por data de modificação. Você não está contribuindo para a resposta da pergunta; você está adicionando informações suplementares importantes. Quando você obtiver 50 pontos de reputação , poderá postar esse tipo de informação como um comentário .
G-Man diz 'Reinstate Monica'
-3

recursivo ( R) e pausa ( |more)

ls -ltR |more
Henrique
fonte