find-command สำหรับไดเร็กทอรีย่อยที่แน่นอน


17

สมมติว่าผมมีไดเรกทอรีdirที่มีสามไดเรกทอรีย่อย..dir1 dir3และข้างในฉันมีไฟล์มากมายและไดเรกทอรีย่อยอื่น ๆ

ฉันต้องการค้นหาไฟล์ข้างในพูดด้วย*.cจุดจบ แต่ฉันต้องการค้นหาเฉพาะในไดเรกทอรีย่อย "dir / dir2" และไดเรกทอรีย่อยทั้งหมด ฉันจะกำหนดสิ่งนั้นได้อย่างไร

สมมติว่าdir/ฉันมีฉัน:

find . -name "*.c"

เพื่อค้นหาในทุกไดเรกทอรี

ฉันจะ จำกัด เฉพาะได้dir2อย่างไร

คำตอบ:


11

ค้นหาจะยอมรับเส้นทางที่ถูกต้องดังนั้น

find ./dir2 -name '*.c'

ควรทำเคล็ดลับ

หากdirไดเรกทอรีคือ/home/user/dirคุณสามารถให้หาเส้นทางแบบเต็ม

find /home/user/dir/dir2 -name '*.c'

18

คุณสามารถใช้-pathพารามิเตอร์findแทน-name:

find . -path "dir2/*.c"

สิ่งนี้จะช่วยให้คุณสามารถค้นหาไฟล์dir2ได้แม้dir2จะไม่ใช่ไดเรกทอรีย่อยโดยตรง EG:

# find . -path "*/dir2/*.c"
./dir_a/dir2/file.c
./dir_b/dir2/file.c

4

คุณทำได้ find dir2 -name '*.c'

คุณสามารถทำได้ (cd dir2; find -name '*.c')

หากคุณต้องการดู dir1 และ dir3 แต่ไม่ใช่ dir2 คุณสามารถทำได้ find {dir1,dir3} -name '*.c'


3
ในคำสั่งสุดท้ายวงเล็บไม่จำเป็น find dir1 dir3 -name \*.cทำงานได้ดี
KeithB

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