Як я можу перерахувати (ls) 5 останніх модифікованих файлів у каталозі?


138

Я знаю ls -t, перерахуватимуть усі файли за модифікованим часом. Але як я можу обмежити ці результати лише останніми n файлами?


10
Зміна замовлення ls -lrtможе комусь допомогти.
PJ Brunet

Любіть це @PJBrunet. Я сформував звичку завжди спілкуватися, tharlяк правило, мати все, що мені потрібно.
Адам Грант

Відповіді:


246

Спробуйте використовувати голову або хвіст. Якщо вам потрібно 5 останніх змінених файлів:

ls -1t | head -5

-1 (це один) говорить про один файл на рядок, а голова говорить зробити перші 5 записів.

Якщо ви хочете останні 5 спробувати

ls -1t | tail -5

2
Якщо я не помиляюся, оболонка представляє результат lsу декількох стовпцях, але вихід з перекладений lsна наступну команду з 1 файлом / dir одночасно
Alex

це, мабуть, так і є. Приємне спрощення.
Пол Рубель

3
Це ігнорує загальну вершину:ls -1t | head -n 6 | tail -n 5
Райан

1
Я не бачу загальної кількості, але якщо є така, яка, безумовно, спрацює.
Пол Рубель

18

У прийнятій відповіді перелічені лише імена файлів, але для отримання перших 5 файлів можна також скористатися:

ls -lht | head -6

де:

-l виводить у форматі списку

-h робить висновок читабельним для людини (тобто розміри файлів відображаються в kb, mb тощо)

-t сортує вихід, розміщуючи спочатку останній змінений файл

head -6покаже 5 файлів, оскільки lsдрукує розмір блоку в першому рядку виводу.

Я думаю, що це трохи більш елегантний і, можливо, корисніший підхід.

Приклад виводу:

total 26960312 -rw-r--r--@ 1 user staff 1.2K 11 Jan 11:22 phone2.7.py -rw-r--r--@ 1 user staff 2.7M 10 Jan 15:26 03-cookies-1.pdf -rw-r--r--@ 1 user staff 9.2M 9 Jan 16:21 Wk1_sem.pdf -rw-r--r--@ 1 user staff 502K 8 Jan 10:20 lab-01.pdf -rw-rw-rw-@ 1 user staff 2.0M 5 Jan 22:06 0410-1.wmv


12

Використовувати tailкоманду:

ls -t | tail -n 5

Це дає 5 найстаріших. Вам потрібно змінити сортування ( ls -tr) або використовувати, headа не tail, щоб отримати 5 найновіших.
Headbank

2

За замовчуванням ls -t сортує вихідний показник від найновішого до найдавнішого, тому комбінація команд для використання залежить від того, у якому напрямку ви хочете впорядкувати свій вихід.

Для найновіших 5 файлів, упорядкованих від найновіших до найстаріших, використовуйте headдля отримання перших 5 рядків виводу:

ls -t | head -n 5

Для найновіших 5 файлів, упорядкованих від найдавніших до найновіших, використовуйте -rперемикач на lsпорядок упорядкування в зворотному порядку та використовуйте tailдля отримання останніх 5 рядків виводу:

ls -tr | tail -n 5

1

ls -tсписок файлів за часом створення не останнім зміненим часом. Використовуйте, ls -ltcякщо ви хочете перерахувати файли за останнім зміненим часом від останнього до першого (зверху вниз). Таким чином, перелічити останні n:ls -ltc | head ${n}


1
На яку платформу / версію ви посилаєтесь? Чи можете ви надати посилання? Переглядаючи підручну сторінку linux, виходить протилежне тому, що ви заявляєте: -t sort by modification time, newest first
Джома
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.