ค้นหาไฟล์ '.c' และ '.h' ทั้งหมดในไดเรกทอรียกเว้นในไดเรกทอรี 'test' ใน Linux


1

ฉันต้องการค้นหาไฟล์. c และ. h ทั้งหมดในไดเรกทอรีของฉันไม่รวมไฟล์ในโฟลเดอร์ 'ทดสอบ' (มีหลายไฟล์)

ไดเรกทอรีที่ฉันค้นหามีไดเรกทอรีทดสอบเช่น:

myDirectory/abc/def/test
myDirectory/abc/def/ghi/test

เป็นต้น

จนถึงตอนนี้ฉันได้ลองแล้ว:

find /myDirectory/* -type d -name test -prune -o -name '*.c' -print

และนี่ดูเหมือนจะใช้ได้กับไฟล์. c แต่เมื่อฉันเรียกใช้:

find /myDirectory/* -type d -name test -prune -o -name '*.c' -o -name '*.h' -print

ไม่มีอะไรกลับมาเลย

ฉันจะรวมไฟล์หลายประเภทได้อย่างไร

คำตอบ:


1

คุณต้องจัดกลุ่มภาค-nameแสดงสองแบบ:

find /myDirectory/* -type d -name test -prune -o \( -name '*.c' -o -name '*.h' \) -print

แบ็กสแลชจำเป็นต้องใช้เพื่อหลีกเลี่ยงวงเล็บ


Huzzah! นั่นมัน! คำถามที่เกี่ยวข้อง: หากฉันต้องการกำจัดไดเรกทอรีทั้งหมดที่มีคำว่า 'test' ฉันควรทำอย่างไร: find / myDirectory / * -type d -name * test * -prune -o (-name ' .c' - o -name ' .h') - พิมพ์ฉันกังวลฉันจะลงเอยด้วยการลบไฟล์ด้วย 'ทดสอบ' ในชื่อ (ซึ่งฉันต้องการเก็บไว้) ขอบคุณล่วงหน้า!
ZebraSocks

ไม่ว่าจะทำงานได้ แต่คุณต้องใส่'*test*'เครื่องหมายคำพูดไม่เช่นนั้นไวด์การ์ด ("glob" *) จะขยายออกก่อนfindจึงจะสามารถดูได้
slhck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.