Làm cách nào tôi có thể liệt kê (ls) 5 tệp sửa đổi cuối cùng trong một thư mục?


137

Tôi biết ls -tsẽ liệt kê tất cả các tập tin theo thời gian sửa đổi. Nhưng làm thế nào tôi có thể giới hạn các kết quả này chỉ trong n tệp cuối cùng ?


10
Đảo ngược trật tự ls -lrtcó thể giúp ai đó.
PJ Brunet

Yêu nó @PJBrunet. Tôi đã hình thành thói quen luôn luôn theo đuổi tharlvì nó có xu hướng có mọi thứ tôi cần.
Adam Grant

Câu trả lời:


245

Hãy thử sử dụng đầu hoặc đuôi. Nếu bạn muốn 5 tệp được sửa đổi gần đây nhất:

ls -1t | head -5

-1 (đó là một) cho biết một tệp trên mỗi dòng và người đứng đầu cho biết có 5 mục đầu tiên.

Nếu bạn muốn thử 5 lần cuối

ls -1t | tail -5

2
Nếu tôi không nhầm, shell đại diện cho đầu ra của lsnhiều cột, nhưng đầu ra của lsđược dẫn theo lệnh với 1 tệp / dir tại một thời điểm
Alex

đó dường như là trường hợp Đơn giản hóa tốt đẹp.
Paul Rubel

3
Điều này bỏ qua Tổng số ở trên cùng:ls -1t | head -n 6 | tail -n 5
Ryan

1
Tôi không thấy tổng cộng, nhưng nếu có một cái chắc chắn sẽ hoạt động.
Paul Rubel

17

Câu trả lời được chấp nhận chỉ liệt kê tên tệp, nhưng để có được 5 tệp hàng đầu, người ta cũng có thể sử dụng:

ls -lht | head -6

Ở đâu:

-l đầu ra ở định dạng danh sách

-h làm cho đầu ra của con người có thể đọc được (tức là kích thước tệp xuất hiện trong kb, mb, v.v.)

-t sắp xếp đầu ra bằng cách đặt tệp sửa đổi gần đây nhất trước

head -6sẽ hiển thị 5 tệp vì lsin kích thước khối trong dòng đầu ra đầu tiên.

Tôi nghĩ rằng đây là một cách tiếp cận thanh lịch hơn và có thể hữu ích hơn.

Ví dụ đầu ra:

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

Sử dụng taillệnh:

ls -t | tail -n 5

Điều này mang lại cho 5 người già nhất. Bạn cần đảo ngược sort ( ls -tr) hoặc sử dụng headchứ không phải tailđể có 5 cái mới nhất.
Headbank

2

Theo mặc định, ls -tsắp xếp đầu ra từ mới nhất đến cũ nhất, do đó, việc kết hợp các lệnh sẽ sử dụng tùy thuộc vào hướng bạn muốn đầu ra của mình được sắp xếp theo hướng nào.

Đối với 5 tệp mới nhất được sắp xếp từ mới nhất đến cũ nhất, hãy sử dụng headđể nhận 5 dòng đầu ra đầu tiên:

ls -t | head -n 5

Đối với 5 tệp mới nhất được sắp xếp từ cũ nhất đến mới nhất, hãy sử dụng công -rtắc để đảo ngược lsthứ tự sắp xếp và sử dụng tailđể lấy 5 dòng đầu ra cuối cùng:

ls -tr | tail -n 5

1

ls -tliệt kê các tập tin theo thời gian tạo không phải là lần sửa đổi cuối cùng. Sử dụng ls -ltcnếu bạn muốn liệt kê các tệp theo thời gian sửa đổi lần cuối từ cuối đến trước (từ trên xuống dưới). Do đó, để liệt kê n cuối cùng:ls -ltc | head ${n}


1
Bạn tham khảo nền tảng / phiên bản nào? bạn có thể cung cấp một liên kết? Nhìn vào trang man linux mang lại kết quả ngược lại với những gì bạn nêu: -t sort by modification time, newest first
Joma
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.