Jak mogę wyświetlić listę (ls) 5 ostatnio zmodyfikowanych plików w katalogu?

138

Wiem, że ls -twyświetli listę wszystkich plików według czasu modyfikacji. Ale jak mogę ograniczyć te wyniki tylko do ostatnich n plików?

Ryan
źródło
10
Odwrócenie kolejności ls -lrtmoże komuś pomóc.
PJ Brunet
Uwielbiam to @PJBrunet. Wypracowałem nawyk, że zawsze tharlmam wszystko, czego potrzebuję.
Adam Grant

Odpowiedzi:

246

Spróbuj użyć głowy lub ogona. Jeśli chcesz 5 ostatnio zmodyfikowanych plików:

ls -1t | head -5

-1 (to jest jeden) oznacza jeden plik w wierszu, a głowa mówi, że weź pierwsze 5 wpisów.

Jeśli chcesz ostatnich 5 prób

ls -1t | tail -5
Paul Rubel
źródło
2
Jeśli się nie mylę, powłoka reprezentuje dane wyjściowe lsw wielu kolumnach, ale dane wyjściowe lssą przesyłane potokiem do następującego polecenia z 1 plikiem / katalogiem naraz
Alex
wydaje się, że tak jest. Niezłe uproszczenie.
Paul Rubel,
3
To ignoruje sumę na szczycie:ls -1t | head -n 6 | tail -n 5
Ryan
1
Nie widzę sumy, ale jeśli jest taka, która z pewnością zadziała.
Paul Rubel
18

Zaakceptowana odpowiedź zawiera tylko nazwy plików, ale aby uzyskać 5 najlepszych plików, można również użyć:

ls -lht | head -6

gdzie:

-l wyniki w formacie listy

-h sprawia, że ​​wynik jest czytelny dla człowieka (tj. rozmiary plików są wyświetlane w kb, mb itp.)

-t sortuje dane wyjściowe, umieszczając najpierw ostatnio zmodyfikowany plik

head -6pokaże 5 plików, ponieważ lswypisuje rozmiar bloku w pierwszym wierszu wyjścia.

Myślę, że jest to nieco bardziej eleganckie i prawdopodobnie bardziej przydatne podejście.

Przykładowe dane wyjściowe:

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

samisnotinsane
źródło
12

Użyj tailpolecenia:

ls -t | tail -n 5
Alex
źródło
To daje 5 najstarszych. Musisz odwrócić sort ( ls -tr) lub użyć headzamiast tail, aby otrzymać 5 najnowszych.
Headbank
2

Domyślnie ls -tsortuje dane wyjściowe od najnowszych do najstarszych, więc kombinacja używanych poleceń zależy od kierunku, w którym mają być uporządkowane dane wyjściowe.

W przypadku 5 najnowszych plików uporządkowanych od najnowszych do najstarszych, użyj headpierwszych 5 wierszy wyniku:

ls -t | head -n 5

W przypadku 5 najnowszych plików uporządkowanych od najstarszego do najnowszego użyj -rprzełącznika, aby odwrócić lskolejność sortowania i użyj, tailaby pobrać ostatnie 5 wierszy wyniku:

ls -tr | tail -n 5
Headbank
źródło
1

ls -tlista plików według czasu utworzenia, a nie czasu ostatniej modyfikacji. Użyj, ls -ltcjeśli chcesz wyświetlić pliki według czasu ostatniej modyfikacji od ostatniej do pierwszej (od góry do dołu). Tak więc, aby wymienić ostatnie n:ls -ltc | head ${n}

victrr
źródło
1
Do jakiej platformy / wersji się odwołujesz? Czy możesz podać link? Spojrzenie na stronę podręcznika systemu Linux daje przeciwieństwo tego, co podajesz: -t sort by modification time, newest first
Joma,