Làm thế nào để chỉ hiển thị dòng cuối cùng của danh sách?


12

Giả sử tôi tạo một danh sách và sắp xếp các tệp theo thuộc tính tạm thời của nó:

ls -ltr

-rwxrwxrwx 1 bla bla 4096 Feb 01 20:10 foo1
-rwxrwxrwx 1 bla bla 4096 Feb 01 20:12 foo2
.
.
.
-rwxrwxrwx 1 bla bla 4096 Mar 05 13:25 foo1000

Tôi nên thêm gì sau ls -ltr trong chuỗi ống để chỉ lấy dòng cuối cùng của danh sách? Tôi biết có sed và awk, nhưng tôi không biết sử dụng chúng, tôi chỉ biết những gì họ có thể làm.

Câu trả lời:


25

Vì bạn đã hỏi về sed cụ thể,

ls -ltr | sed '$!d'

cảm ơn bạn, tôi bây giờ một chút tự hào đã học được một số sed cụ thể.
Abdul Al Hazred

3
Ngoài ra, sed -n '$p'làm điều tương tự, nhưng thực sự tail -1là công cụ phù hợp cho công việc.
imiric

Cảm ơn! Tôi đã quản lý để trích xuất dòng cuối cùng trong / Proc / cpuinfo và cắt số 0 đứng đầu một cách dễ dàng (được sử dụng để trích xuất số sê-ri RPi3 một cách dễ dàng):sed '$!d s/.*: 0\+//' /proc/cpuinfo
Yaron

11

Bạn đang tìm kiếm tail:

ls -ltr | tail -n 1

Điều này sẽ chỉ hiển thị dòng cuối cùng của ls -ltrđầu ra. Bạn có thể kiểm soát số lượng dòng bằng cách thay đổi giá trị sau -n; nếu bạn bỏ qua -n 1hoàn toàn bạn sẽ nhận được mười dòng.


câu trả lời hoàn hảo, rất nhanh chóng và hữu ích
Abdul Al Hazred

tail -1... -nlà dư thừa.
dhchdhd

@Barry tail -1không được dùng nữa (xem phần RỦI RO RỦI RO của đặc tả POSIX chotail hoặc phần cuối của hướng dẫn GNUtails ); hiện tại nó vẫn hoạt động trong trường hợp này, nhưng tốt nhất là tránh sử dụng nó trong các ví dụ.
Stephen Kitt

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.