Bash: วิธีการป้อนไดเรกทอรีย่อยที่แก้ไขล่าสุดได้อย่างไร


4

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

ๆ หนึ่งซับง่าย ๆ ที่จะทำเช่นนั้น?

คำตอบ:


7
cd "$(ls -dt */ | head -1)"

บันทึกเป็นนามแฝงใน ~/.bashrc, เช่น.

alias lcd='cd -- "$(ls -dt -- */ | head -1)"'

และตอนนี้ lcd ในไดเรกทอรีใด ๆ จะเปลี่ยนเป็นไดเรกทอรีที่มีการเปลี่ยนแปลงล่าสุดในไดเรกทอรีปัจจุบัน


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

มันไม่ได้ผลสำหรับฉัน ฉันได้รับข้อผิดพลาด -bash: cd: mydir/: No such file or directory ที่ไหน mydir เป็นไดเรกทอรีที่แก้ไขล่าสุด ดูเหมือนว่าจะหาไดเรกทอรีที่ถูกต้อง แต่มีบางสิ่งที่ทำให้เกิด cd ที่จะล้มเหลว. ความคิดใด ๆ
Patrick Marchwiak

2

การเพิ่มฟังก์ชั่นนี้ให้กับฉัน ~/.bashrc ทำงานได้สำหรับฉัน

function lcd(){
cd $(ls -v1td --color=never */ | head -1)
}

หากฉันพยายามกำหนดเป็นนามแฝงนิพจน์จะได้รับการประเมินหนึ่งครั้งเมื่อเชลล์เริ่มทำงานและพยายามที่จะทำซีดีไปยังไดเรกทอรีย่อยเดียวกันในไดเรกทอรีบ้านของฉัน ปราศจาก --color=never คำสั่งฉันได้รับข้อผิดพลาด -bash: cd: mydir/: No such file or directory กล่าวถึงในความคิดเห็นอื่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.