ฉันจะค้นหาไดเรกทอรีย่อยทั้งหมดเพื่อค้นหาด้วยชื่อที่แน่นอนได้อย่างไร


13

สมมติว่าฉันมีไดเรกทอรีระดับบนสุดที่เรียกว่า/dirและไดเรกทอรีย่อยมากมาย ฉันจะค้นหาไดเรกทอรีย่อยของ/dirเพื่อค้นหาหนึ่งชื่อได้x/x/dir/x/x/x/targetอย่างไร

คำถามนี้เป็นคำถามที่คล้ายกัน แต่ไม่ว่าสิ่งที่ฉันกำลังมองหา: ค้นหาคำสั่งสำหรับการไดเรกทอรีย่อยบางอย่าง

ฉันไม่ได้มองหาไฟล์เพียงไดเรกทอรีที่มีชื่อเฉพาะ

คำตอบ:


18

ลองfind /dir -type d -name "your_dir_name"ดู

แทนที่/dirด้วยชื่อไดเรกทอรีของคุณและแทนที่"your_dir_name"ด้วยชื่อที่คุณกำลังมองหา

-type dจะบอกfindให้ค้นหาไดเรกทอรีเท่านั้น


1

สำหรับวิธีแก้ปัญหาทั่วไปเพิ่มเติมในการค้นหาหนึ่งไดเรกทอรีหรือมากกว่านั้นและค้นหาสิ่งต่างๆเช่นค้นหาที่อยู่อีเมลเก่า ๆ ในที่เก็บ git ดูรูปแบบต่อไปนี้:

find . -type d -name .git -print0|\
    xargs -0r -I {} find {} -type f -print0 |\
    xargs -0r grep -e 'my.old@email.address'

1
echo **/target

หรือรับหนึ่งการแข่งขันต่อบรรทัด:

printf %s\\n **/target

สิ่งนี้ทำงานนอกกรอบใน zsh ใน bash คุณต้องรันshopt -s globstarก่อนและระวังว่าสิ่งนี้จะลัดไปยังลิงก์สัญลักษณ์ไปยังไดเรกทอรี ใน ksh93 คุณต้องเรียกใช้set -o globstarก่อน

หากคุณต้องการจับคู่เฉพาะไดเรกทอรีหรือลิงก์สัญลักษณ์ไปยังไดเรกทอรีให้เพิ่มการต่อท้าย/(เช่น**/target/) ใน zsh เพื่อจับคู่เฉพาะไดเรกทอรี แต่ไม่เชื่อมโยงสัญลักษณ์ไปยังไดเรกทอรีให้ทำ**/target(/)เช่นนั้น

ในเชลล์ใด ๆ คุณสามารถใช้findคำสั่ง:

find . -name target

บน Linux และ Cygwin .เป็นทางเลือก -type dถ้าคุณต้องการเพื่อให้ตรงกับไดเรกทอรีเท่านั้นเพิ่ม

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