Lista decrescente ordenada pelo tempo de modificação do arquivo

3

Como posso gerar uma lista de arquivos em um diretório [por exemplo, "/ mnt / hdd / PUB /"] ordenada pela hora da modificação dos arquivos? [em ordem decrescente, o arquivo modificado mais antigo está no final da lista]

ls -A -lRt seria ótimo: link

Mas se um arquivo é alterado em um diretório, ele lista o diretório completo, então o link pastebined não é bom [Eu não quero uma lista ordenada por "diretórios", eu preciso de uma lista ordenada "por arquivo" ]

SO: OpenWrt [não Perl - > espaço insuficiente para ele :( + não "stat", ou comando "file"].

    
por LanceBaynes 28.02.2011 / 16:38

3 respostas

1

Use a localização e classificação:

find YOUR_START_DIR -type f -print0 |
    xargs -r -0 ls -l | 
        sort -k 6.2,6.5nr \
             -k 6.7,6.8nr \
             -k 6.10,6.11nr \
             -k 7.2,7.3nr \
             -k 7.5,7.6nr

a longa lista de k opções após a classificação define o ano, mês, dia, hora e minuto como chaves de classificação e ordem por elas nessa ordem.

Arquivos salvos no mesmo minuto não serão solicitados. Se você quiser descer para segundos e mais, adicione "--full-time" ao comando ls e adicione novas chaves no final do comando sort.

    
por 28.02.2011 / 17:08
0

Aqui está uma resposta feia que funciona parcialmente para mim no cygwin:

 ls -A -lRt --full-time | sort | uniq | grep -v '^total\|:$'
  • Lista de arquivos de maneira recursiva, exibe registros de data e hora completos para cada arquivo
  • classifica-os
  • descarta duplicatas
  • Anuncia algumas entradas que não são de arquivo, como "total de arquivos no diretório X" e as linhas de cabeçalho dos arquivos em que você está se reproduzindo.
por 28.02.2011 / 17:08
0

"Alterar" o arquivo no diretório também pode atualizar o horário de modificação do diretório. Mas se você não está interessado nos diretórios, mostre-os:

ls -AlRt | egrep -v '^d'
    
por 01.03.2011 / 02:10

Tags