คำตอบ zsh บังคับ:
latest_directory=(parent/*(/om[1]))
อักขระในวงเล็บคือตัวระบุแบบกลม : /
เพื่อจับคู่เฉพาะไดเรกทอรีom
เรียงลำดับการจับคู่ตามอายุที่เพิ่มขึ้นและ[1]
เพื่อคงการจับคู่แรก (เช่นล่าสุด) เท่านั้น เพิ่มN
ถ้าคุณต้องการที่จะได้รับอาร์เรย์ที่ว่างเปล่า (ปกติคุณจะได้รับอาร์เรย์ 1 Elementy) parent
ถ้ามีไดเรกทอรีย่อยไม่
อีกทางหนึ่งสมมติว่าparent
ไม่มีอักขระตัวใดตัวหนึ่งที่อยู่รอบตัว:
latest_directory='parent/*(/om[1])'; latest_directory=$~latest_directory
หากคุณไม่มี zsh แต่คุณมีเครื่องมือ GNU ล่าสุด (เช่น Linux ที่ไม่ได้ฝังตัวหรือ Cygwin) คุณสามารถใช้find
แต่ก็ยุ่งยาก นี่คือวิธีหนึ่ง:
latest_directory_inode=$(find parent -mindepth 1 -maxdepth 1 -type d -printf '%Ts %i\n' | sort -n | sed -n '1 s/.* //p')
latest_directory=$(find parent -maxdepth 1 -inum "$latest_directory_inode")
มีวิธีแก้ปัญหาง่ายๆด้วยls
ซึ่งทำงานได้ตราบใดที่ไม่มีชื่อไดเรกทอรีที่มีบรรทัดใหม่หรือ (ในบางระบบ) อักขระที่ไม่สามารถพิมพ์ได้:
latest_directory=$(ls -td parent/*/ | head -n1)
latest_directory=${latest_directory%/}
ls -ltr ./parent | grep '^d' | tail -1| awk '{print $NF}'