มีวิธีที่สะอาดและมีประสิทธิภาพเป็นของsort | head
วันที่:
ใช้ls -l
สำหรับพิมพ์สวย
find . ! -type d -printf "%T@ %p\0" |
sort -zrn |
head -zn 10 |
sed -z 's/^[0-9.]\+ //' |
xargs -0 ls -lt
ในฐานะที่เป็นฟังก์ชั่นทุบตี :
findByDate() {
local humansize=''
[ "$1" = "-h" ] && humansize='h' && shift
find . ${2:-! -type d} -printf "%T@ %p\0" |
sort -zrn |
head -zn ${1:--0} |
sed -z 's/^[0-9.]\+ //' |
xargs -0 ls -dlt${humansize}
}
สิ่งนี้ทำได้ด้วยการโต้แย้งหนึ่งหรือสองครั้งหรือแม้กระทั่งโดยไม่
Usage: findByDate [-h] [lines] [find options]
ตัวอย่าง:
findByDate
จะแสดงรายการไดเรกทอรีที่ไม่ใช่ทั้งหมดเรียงตามวันที่ หมายเหตุ:
แม้บนระบบไฟล์ขนาดใหญ่เนื่องจากxargs
รายการที่เรียงแล้วได้รับลำดับไฟล์จะยังคงถูกต้องแม้ว่าls
จะต้องรันหลายครั้ง
findByDate -h 12
จะแสดงรายการ 12 ไดเรกทอรีล่าสุดที่ไม่เรียงลำดับตามวันที่โดยมีขนาดพิมพ์ในรูปแบบที่มนุษย์อ่านได้
findByDate 42 '-type l'
จะแสดงรายการลิงก์ระลึกล่าสุดอีก 42 รายการ
findByDate -0 '( -type l -o -type b -o -type s -o -type c )'
จะแสดงรายการ symlink อุปกรณ์บล็อกซ็อกเก็ตและอุปกรณ์อักขระทั้งหมดเรียงตามวันที่
คำสั่งอินเวอร์
แทนที่head
ด้วยtail
และเปลี่ยนสวิตช์ของsort
และls
:
findByDate() {
local humansize=''
[ "$1" = "-h" ] && humansize='h' && shift
find . ${2:-! -type d} -printf "%T@ %p\0" |
sort -zn |
tail -zn ${1:-+0} |
sed -z 's/^[0-9.]\+ //' |
xargs -0 ls -dltr${humansize}
}
ฟังก์ชั่นเดียวกันการใช้งานเดียวกัน:
Usage: findByDate [-h] [lines] [find options]