Nota: Isso funcionará para o GNU-find, mas não para todos os outros.
find . -maxdepth 1 -size +20M -printf "%T@ %f\n" |
sort -nr | head -n 20 | sed 's/[^ ]\+ //'
Começando como @Rajish, mas usando o comando printf
de find
para especificar o formato de saída. Existem 3 formatos relacionados a tempo, atime, ctime e mtime - %T
é para mtime, %A
e %C
são para os outros formatos.
@
é para especificar o formato de tempo em segundos desde a época. %f
é para o nome do arquivo, \n
para uma nova linha entre 2 arquivos.
Em seguida, a classificação por número em ordem inversa fornece os arquivos mais novos primeiro e nós pegamos 20 linhas¹ com head
.
No final, sed
é usado para eliminar as informações de tempo.
¹) como head
trabalha linha por linha, um único arquivo com mais de 20 novas linhas no nome, o que é um pouco incomum, mas não proibido, pode corromper a saída se ela pertencer às 20 primeiras correspondências. Se você tiver esses arquivos, por favor, tente se livrar deles - bem, para mudar o nome deles. Eles costumam ser um problema para scripts simples.