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.