จะแสดงเฉพาะบรรทัดสุดท้ายของรายชื่อได้อย่างไร


12

สมมติว่าฉันสร้างรายชื่อและจัดเรียงไฟล์ตามคุณสมบัติชั่วคราว:

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

ฉันควรเพิ่มอะไรไว้ด้านหลัง ls -ltr ในไปป์ไลน์เพื่อรับเฉพาะบรรทัดสุดท้ายของรายชื่อ ฉันรู้ว่ามีคนใจอ่อนและตกใจ แต่ฉันไม่รู้วิธีใช้พวกเขาฉันรู้ว่าพวกเขาสามารถทำอะไรได้บ้าง

คำตอบ:


25

เมื่อคุณถามเกี่ยวกับ sed โดยเฉพาะ

ls -ltr | sed '$!d'

ขอบคุณตอนนี้ฉันรู้สึกภูมิใจที่ได้เรียนรู้บางอย่างที่เป็นรูปธรรม
Abdul Al Hazred

3
นอกจากนี้ยังsed -n '$p'ทำสิ่งเดียวกัน แต่จริงๆแล้วtail -1เป็นเครื่องมือที่เหมาะสมสำหรับงาน
imiric

ขอบคุณ! ฉันจัดการเพื่อแยกบรรทัดสุดท้ายใน / proc / cpuinfo และตัดศูนย์นำหน้าได้อย่างง่ายดาย (ใช้สำหรับการแยกหมายเลขซีเรียล RPi3 อย่างง่ายดาย):sed '$!d s/.*: 0\+//' /proc/cpuinfo
Yaron

11

คุณกำลังมองหาtail:

ls -ltr | tail -n 1

สิ่งนี้จะแสดงเฉพาะบรรทัดสุดท้ายของls -ltrเอาต์พุต คุณสามารถควบคุมจำนวนของสายโดยการเปลี่ยนค่าหลังจากที่-n; หากคุณเว้นไว้-n 1ทั้งหมดคุณจะได้สิบบรรทัด


คำตอบที่สมบูรณ์แบบรวดเร็วและเป็นประโยชน์มาก
Abdul Al Hazred

tail -1... -nซ้ำซ้อน
dhchdhd

@Barry tail -1เลิกใช้แล้ว (ดูหัวข้อ "RATIONALE" ของข้อกำหนด POSIX สำหรับtailหรือส่วนสุดท้ายของคู่มือGNUtails ) ยังคงใช้งานได้ในกรณีนี้ แต่ตอนนี้ควรหลีกเลี่ยงการใช้ในตัวอย่าง
Stephen Kitt

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.