ฉันจะรับไฟล์ที่พบโดยบรรทัดคำสั่ง 'ค้นหา' เรียงลำดับตามวันที่แก้ไขใน OS X ได้อย่างไร


13

เมื่อใช้ Mac OS X Terminal ฉันจะเขียนfindคำสั่งที่สั่งซื้อผลลัพธ์ตามวันที่แก้ไขได้อย่างไร (ล่าสุดมาก่อน)

มีคำถามที่คล้ายกันอยู่แล้ว แต่พวกเขาอ้างถึง GNU findและ POSIX แต่ฉันไม่ทราบว่า Mac OS X เป็น GNU หรือ POSIX หรืออย่างอื่น

คำตอบ:


16

OS X เป็นไปตามPOSIXอย่างสมบูรณ์

สิ่งที่ควรทำ:

find . -type f -name "*.txt" -print0 | xargs -0 ls -tl

หมายเหตุบางส่วน:

  • -tตัวเลือกในการจะเรียงลำดับโดยlsmtime
  • xargslsจะใช้ในการส่งผ่านชื่อไฟล์เป็นอาร์กิวเมนต์ไปยัง โปรดทราบว่าคุณต้องใช้-print0ในfindและ-0ในxargsหากคุณมีไฟล์ที่มีช่องว่างในชื่อของพวกเขา นอกจากนี้จำนวนเงินสูงสุดของการขัดแย้งถูกจำกัด โดยARG_MAXตัวแปร getconf ARG_MAXเพื่อหาวิธีที่หลายคนเหล่านี้จะป้อน
  • คุณสามารถจัดหา-rเพื่อกลับลำดับการจัดเรียง (→ไฟล์ที่เก่าที่สุดก่อน)
  • ตัวเลือกfindและlsตัวเลือกอื่น ๆ- ตามปกติ - อธิบายไว้ในคู่มือ ( man findหรือman ls)

ls -ltrเพื่อกลับลำดับ
Daniel Beck

Xe จะทำให้พวกมันถูกจัดเรียงภายในกลุ่มของARG_MAXอักขระชื่อไฟล์(น้อยกว่า) เล็กน้อยในแบบนั้นแน่นอน
JdeBP

ใช่ขอบคุณสำหรับการเพิ่ม @JdeBP และ Daniel getconf ARG_MAXจะแสดงหมายเลขนั้น
slhck

อาปัญหาของฉันตอนนี้คือฉันกำลังใช้คำสั่งนี้ใน applescript และใช้ผลการอ่านเนื้อหาของไฟล์นั้น แต่ตอนนี้ผลลัพธ์มีข้อมูลวันที่ไม่ใช่แค่ชื่อไฟล์: do shell script "find / Users / akw / Library / Preferences / ByHost / -name 'com.apple.windowserver *' -print0 | xargs -0 ls -tl | head -1 "ส่งคืนสิ่งนี้ ->" -rw ------- @ 1 akw staff 5512 มิ.ย. 19 07:52 /Users/akw/Library/Preferences/ByHost//com.apple.windowserver.1FC3A841-2C0C- 5F48-B746-1DEE064F6D12.plist "
zadam

@zadam แล้วใช้แทนls -t ช่วยให้คุณมีรายชื่อยาวรวมทั้งวันที่ ฉันไม่รู้ว่าคุณกำลังพยายามทำอะไรอย่างนั้นจริง ๆ ขออภัยสำหรับสิ่งนั้น - ฉันคิดว่าคุณต้องการเห็นเช่นกัน ls -tl-lmtime
slhck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.