Примітка. Це буде працювати для 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
все одно вказав .