ฉันสามารถแสดงรายการไฟล์ที่เรียงลำดับตามวันที่ที่เพิ่มลงในโฟลเดอร์จากเครื่องมือบรรทัดคำสั่งเช่น ls ได้หรือไม่


10

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

มีวิธีอื่นที่จะทำอย่างไร


แสดงที่ ?
Rob

บรรทัดคำสั่ง! .Got มัน! ฉันลงเอยด้วยการเขียนหนึ่งซับที่ใช้กลอุบาย เนื่องจากฉันไม่ค่อยมีชื่อเสียงฉันจึงยังไม่สามารถตอบคำถามของฉันเองฉันจะทำในภายหลัง
Ramiro Araujo

ยินดีต้อนรับสู่เว็บไซต์ Ramiro - คุณควรจะสามารถตอบคำถามของคุณเองได้ตลอดเวลา - แต่จะมีข้อ จำกัด สำหรับคุณในการ "ทำเครื่องหมายว่ายอมรับ" คำตอบของคุณ รู้สึกอิสระที่จะแก้ไขคำตอบของฉันเพื่อให้เหมาะกับความต้องการของคุณหรือให้คำตอบของคุณเองหาก / เมื่อคุณต้องการ
bmike

คำตอบ:


6

วิธีที่ง่ายกว่า (เร็วกว่า):

mdls -name kMDItemFSName -name kMDItemDateAdded -raw * | \
xargs -0 -I {} echo {} | \
sed 'N;s/\n/ /' | \
sort

1
อ๋อดีกว่ามาก :)
Ramiro Araujo

มีคนบอกรายละเอียดว่าแต่ละบรรทัดทำอะไรได้บ้าง นอกจากนี้วิธีแก้ปัญหานี้สามารถดำเนินการในเทอร์มินัลเป็นบรรทัดคำสั่งแต่ละรายการ (เรียงตามลำดับหลังจากนั้นอีกหนึ่งรายการ) หรือภายในสคริปต์เท่านั้น
EJ Mak

4

วันที่เพิ่มจะถูกเก็บไว้เป็นรายการเมตาดาต้าkMDItemDateAddedและmdlsคำสั่งจะเปิดเผยข้อมูลสำหรับแต่ละไฟล์ที่ส่งเป็นอาร์กิวเมนต์

ดังนั้นเมื่อต้องการดัมพ์วันที่ที่เพิ่มสำหรับไฟล์ทั้งหมดในดาวน์โหลดในลำดับใดก็ตาม * ที่เชลล์ของคุณได้รับคุณสามารถขยาย:

mdls -name kMDItemDateAdded ~ / Downloads / *

คุณจะต้องแฮ็คการรวมกันของ find และ sed / awk / perl / อะไรก็ตามที่จะรวมกันเพื่อแทนที่lsแต่บางที mdfind สามารถถูกเรียกใช้โดยสคริปต์ของคุณแทนที่จะต้องสร้างใหม่lsและแยกวิเคราะห์ผลลัพธ์นั้น


1
ใช่ ฉันพบในภายหลังและสร้างสายการบินที่สวยงามที่สอนสิ่งต่าง ๆ มากมายให้ฉัน :) ขอบคุณสำหรับความช่วยเหลือ
Ramiro Araujo

2
วางที่หนึ่งซับในโดยการแก้ไขคำตอบของฉัน - แบ่งปันความรู้!
bmike

2

ตามปกติหลังจากเขียนคำถามฉันเริ่มขุดหาข้อมูลเมตาในไฟล์และจบลงด้วยการเขียนนี้:

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


โอ้ฉันแยกซับในหลายบรรทัดเพื่อความกระจ่างเท่านั้น :)
Ramiro Araujo

1
ใช้ls -Aแทน-aเพื่อให้คุณไม่จำเป็นต้องgrep -vสำหรับและ. ..
mfilej

0

ผู้ชาย

 -U      Use time of file creation, instead of last modification for
         sorting (-t) or long output (-l).

1
ไม่ฉันต้องการเพิ่มวันที่ไม่ได้สร้างวันที่ เช่นเดียวกับโฟลเดอร์ดาวน์โหลดเริ่มต้นใน Dock
Ramiro Araujo

วิธีเพิ่มวันที่ไม่เหมือนกับวันที่สร้างอย่างไร
เจสัน

1
Jason - date ที่สร้างขึ้นคือเมื่อไฟล์ถูกสร้างขึ้นดังนั้นเมื่อ Safari ดาวน์โหลดไฟล์จากคอมพิวเตอร์เครื่องอื่นมันถูกสร้างขึ้นอย่างชัดเจนสำหรับการดาวน์โหลดนั้นหรืออาจสร้างเป็นเดือนหรือปีก่อนที่การดาวน์โหลดจะเกิดขึ้น ดูคำตอบของฉันสำหรับรายละเอียดเกี่ยวกับที่เก็บข้อมูลนี้ใน OS X
bmike
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.