Примітка. Це буде працювати для GNU-пошуку, але не для будь-якої іншої знахідки.
find . -maxdepth 1 -size +20M -printf "%T@ %f\n" |
sort -nr | head -n 20 | sed 's/[^ ]\+ //'
Починаючи як @Rajish, але використовуючи printfкоманду з, findщоб вказати вихідний формат. Існують 3 формати, пов'язані з часом, atime, ctime і mtime - %Tце для mtime, %Aа %Cтакож для інших форматів.
@полягає в тому, щоб вказати формат часу в секундах з епохи. %fє для імені файлу, \nдля нового рядка між двома файлами.
Потім сортування за номером у зворотному порядку спочатку дає наймолодші файли, і ми беремо 20 рядків¹ з head.
Зрештою, sedвикористовується, щоб викинути інформацію про час.
¹) оскільки headпрацює рядок за рядком, один файл із назвою понад 20 нових рядків, що є дещо незвичним, але не забороненим, може пошкодити вихід, якщо йому належать перші 20 збігів. Якщо у вас є такі файли, будь ласка, спробуйте позбутися від них - ну, щоб змінити їх назву. Вони часто будуть проблемою для простих сценаріїв.
file«s-lsкоманди, спеціальні символи будуть надруковані в вигляді зворотної косої маскування символів:find . -maxdepth 1 -size +20M -printf "%T@ " -ls | sort -nr | head -n 20 | sed 's/[^ ]\+ //'. Крім того, як буде виглядати форматls -l, EoghanM також-lвсе одно вказав .