ค้นหาไดเรกทอรีที่ไม่รวม


13

ฉันอยู่บน Linux (Ubuntu) และฉันต้องการแยกไดเรกทอรีบางรายการ (เช่น. hg) เมื่อฉันทำ

find | less  

ฉันพยายามต่อไปนี้เพื่อแยกไดเรกทอรี. hg ออกจากรายการ แต่ดูเหมือนจะไม่ทำงาน

find -type d \( ! -iname \.hg \)
find -type d \( ! -name \.hg \)
find -type d \( ! -iname .hg \)

ฉันจะแยก.directoryคำสั่ง find ได้อย่างไร

คำตอบ:


14

ในการวิจัยสำหรับfindโซลูชันที่คล้ายกันฉันค้นพบคำอธิบายที่เป็นประโยชน์เกี่ยวกับวิธีการใช้ตัวเลือก '-prune' ของ 'find' ใน sh? โดยลอเรนก้านขด

คุณสามารถใช้สิ่งที่ชอบ:

find . \( -type d -name .hg -prune \) -o \( -type f -name "foo" -print \)

หรือ (ไม่มีชื่อ)

find . \( -type d -name .hg -prune \) -o \( -type f -print \)

วงเล็บ (หนี) \(และ\)จัดกลุ่มการทดสอบ ( typeและname) และการกระทำที่เกี่ยวข้อง ( pruneและprintตามลำดับ) ร่วมกันทางซ้ายและขวาของ OR ( -o)

เนื่องจาก-oมีความสำคัญต่ำกว่าการตีข่าวคุณสามารถละเว้นวงเล็บได้หากต้องการ หลายคนใช้งานนอกจากนี้ยังช่วยให้คุณสามารถข้ามขั้นสุดท้ายfind-print

find . -type d -name .hg -prune -o -type f -name "foo" -print

1
ฉันกำลังจะเขียนวิธีแก้ปัญหาของฉัน แต่ดูเหมือนว่าจะเป็นอย่างนี้ โดยส่วนตัวแล้วฉันจะใส่-pruneในวงเล็บชุดแรกและ-type f -printในชุดที่สองเพียงเพื่อให้การทำงานและ / หรือการดำเนินการชัดเจนขึ้น
me_and

ฉันปรับปรุงเครื่องหมายวงเล็บ (และเหตุผลของพวกเขา) ด้วยความเห็นของ @me_and
fheub

2

ดูได้ที่ack: http://betterthangrep.com/

นอกเหนือจากการมีชุดโฟลเดอร์แยกที่เป็นค่าเริ่มต้นที่สมเหตุสมผล (.hg เป็นค่าเริ่มต้นที่ไม่รวมเช่น) มันเป็นเรื่องง่ายที่จะแยกโฟลเดอร์ใหม่:

ack --ignore-dir=.directory search_term

หากต้องการนำสิ่งนี้กลับไปยังกรณีการใช้งานของคุณที่คุณกำลังมองหารายการไฟล์คุณจะต้องใช้-fตัวเลือกดังเช่นใน:

ack -f --ignore-dir=.directory

ฉันเปลี่ยนจากการเขียนคำสั่งค้นหา / ค้นหาที่ซับซ้อนเป็นคำสั่งแบบง่าย ๆ

เคล็ดลับ: ใส่ตัวเลือกบรรทัดคำสั่งที่ใช้กันทั่วไป (เช่นโฟลเดอร์ที่ถูกแยกออก) เป็นไฟล์ .ackrc


ตามfind | lessคำถามข้างต้น OP กำลังมองหารายการไฟล์อย่างง่าย สิ่งนี้ช่วยได้อย่างไร
CVn

@ MichaelKjörlingตามที่ฉันระบุไว้ในคำตอบตัวเลือก -f จะแสดงรายการไฟล์
Brian Leathem

-2

คุณสามารถลอง

find \( ! -regex '.*/\.directory\(\|/.*\)' \)

ค่อนข้างแน่ใจว่านี่ไม่ทำอะไรเหมือนที่ OP ร้องขอ
me_and

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