ฉันต้องสร้างสคริปต์ที่แสดงไฟล์ในลำดับเดียวกันกับโฟลเดอร์ดาวน์โหลดเริ่มต้นใน Dock เรียงลำดับตามวันที่เพิ่มใหม่ล่าสุดก่อน ls
ฉันไม่สามารถดูเหมือนจะหาตัวเลือกใน
มีวิธีอื่นที่จะทำอย่างไร
ฉันต้องสร้างสคริปต์ที่แสดงไฟล์ในลำดับเดียวกันกับโฟลเดอร์ดาวน์โหลดเริ่มต้นใน Dock เรียงลำดับตามวันที่เพิ่มใหม่ล่าสุดก่อน ls
ฉันไม่สามารถดูเหมือนจะหาตัวเลือกใน
มีวิธีอื่นที่จะทำอย่างไร
คำตอบ:
วิธีที่ง่ายกว่า (เร็วกว่า):
mdls -name kMDItemFSName -name kMDItemDateAdded -raw * | \
xargs -0 -I {} echo {} | \
sed 'N;s/\n/ /' | \
sort
วันที่เพิ่มจะถูกเก็บไว้เป็นรายการเมตาดาต้าkMDItemDateAdded
และmdls
คำสั่งจะเปิดเผยข้อมูลสำหรับแต่ละไฟล์ที่ส่งเป็นอาร์กิวเมนต์
ดังนั้นเมื่อต้องการดัมพ์วันที่ที่เพิ่มสำหรับไฟล์ทั้งหมดในดาวน์โหลดในลำดับใดก็ตาม * ที่เชลล์ของคุณได้รับคุณสามารถขยาย:
mdls -name kMDItemDateAdded ~ / Downloads / *
คุณจะต้องแฮ็คการรวมกันของ find และ sed / awk / perl / อะไรก็ตามที่จะรวมกันเพื่อแทนที่ls
แต่บางที mdfind สามารถถูกเรียกใช้โดยสคริปต์ของคุณแทนที่จะต้องสร้างใหม่ls
และแยกวิเคราะห์ผลลัพธ์นั้น
ตามปกติหลังจากเขียนคำถามฉันเริ่มขุดหาข้อมูลเมตาในไฟล์และจบลงด้วยการเขียนนี้:
ls -a | \
grep -v '^\.$\|^\.\.$' | \
xargs -I {} mdls -name kMDItemFSName -name kMDItemDateAdded {} | \
sed 'N;s/\n//' | grep -v '(null)' | \
awk '{print $3 " " $4 " " substr($0,index($0,$7))}' | \
sort -r
โดยพื้นฐานแล้ว: 1. แสดงรายการไฟล์ทั้งหมด 2. กรองข้อมูล และ .. 3. ได้รับชื่อและวันที่เพิ่มหนึ่งบรรทัดหลังจากที่อื่น 4. ผสานทุกสองบรรทัดเป็น 1 บรรทัด 5. แยกวันที่เวลาและชื่อ 6. เรียงลำดับในสิ่งที่ตรงกันข้าม (ตั้งแต่ datetime อยู่ข้างหน้าเรียงลำดับตาม วันเวลา)
หวังว่ามันจะช่วยให้คนอื่น! :)
@bike จริง ๆ แล้วไซต์กำหนดให้ฉัน จำกัด การตอบคำถามของฉันหลังจาก 8 ชั่วโมงที่โพสต์คำถามของฉันเนื่องจากฉันไม่มีชื่อเสียง: D
ls -A
แทน-a
เพื่อให้คุณไม่จำเป็นต้องgrep -v
สำหรับและ.
..
ผู้ชาย
-U Use time of file creation, instead of last modification for sorting (-t) or long output (-l).