ฉันจะแสดงรายการ (ls) 5 ไฟล์ที่แก้ไขล่าสุดในไดเร็กทอรีได้อย่างไร


142

ฉันรู้ว่าls -tจะแสดงรายการไฟล์ทั้งหมดตามเวลาที่แก้ไข แต่ฉันจะ จำกัด ผลลัพธ์เหล่านี้เฉพาะnไฟล์สุดท้ายได้อย่างไร


10
การกลับคำสั่งls -lrtอาจช่วยใครบางคนได้
PJ Brunet

รักมัน @PJBrunet ฉันได้สร้างนิสัยที่ชอบอยู่กับtharlมันมาตลอดเพราะมันมีทุกอย่างที่ฉันต้องการ
Adam Grant

คำตอบ:


255

ลองใช้หัวหรือหาง หากคุณต้องการ 5 ไฟล์ที่แก้ไขล่าสุด:

ls -1t | head -5

-1 (นั่นคือหนึ่ง) กล่าวว่าหนึ่งไฟล์ต่อหนึ่งบรรทัดและส่วนหัวบอกว่ารับ 5 รายการแรก

หากคุณต้องการลอง 5 ครั้งสุดท้าย

ls -1t | tail -5

2
ถ้าฉันไม่เข้าใจผิดเชลล์จะแสดงผลลัพธ์ของlsในหลายคอลัมน์ แต่เอาต์พุตของlsถูกส่งไปยังคำสั่งต่อไปนี้พร้อมกับ 1 ไฟล์ / dir ในแต่ละครั้ง
Alex

ดูเหมือนจะเป็นเช่นนั้น การทำให้เข้าใจง่ายขึ้น
Paul Rubel

3
สิ่งนี้ไม่สนใจผลรวมที่อยู่ด้านบน:ls -1t | head -n 6 | tail -n 5
Ryan

2
ฉันไม่เห็นผลรวม แต่ถ้ามีอย่างใดอย่างหนึ่งที่จะใช้ได้อย่างแน่นอน
Paul Rubel

22

คำตอบที่ยอมรับจะแสดงเฉพาะชื่อไฟล์ แต่หากต้องการรับไฟล์ 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

3

โดยค่าเริ่มต้น 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
คุณอ้างถึงแพลตฟอร์ม / เวอร์ชันใด คุณสามารถให้ลิงค์ได้หรือไม่? การดูman-page ของ linuxให้ผลตรงกันข้ามกับสิ่งที่คุณระบุ: -t sort by modification time, newest first
Joma
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.