ฉันจะค้นหา (หรือแยก) ไดเรกทอรีและไดเรกทอรีย่อยทั้งหมดที่ตรงกับรูปแบบที่แน่นอน (ใน Linux) ได้อย่างไร


17

ฉันพยายามใช้คำสั่งค้นหา Linux เพื่อค้นหาไดเรกทอรีและไดเรกทอรีย่อยทั้งหมดที่ไม่มี. svn (โฟลเดอร์ย่อยที่ถูกซ่อนอยู่) ในเส้นทางของพวกเขา ฉันสามารถทำให้มันแยกไดเรกทอรี. svn จริง ๆ เท่านั้น แต่ไม่รวมถึงไดเรกทอรีย่อย

นี่คือสิ่งที่ฉันทำตอนนี้:

find . -type d \! -iname '*.svn*'

ฉันยังลอง:

find . -type d \! iname '.svn' \! iname '.svn/*'

แค่ FYI ฉันพยายามใช้รูปแบบการค้นหาเพื่อให้ฉันสามารถใช้คุณสมบัติการโค่นล้มบางอย่างกับไดเรกทอรีทั้งหมดในที่เก็บของฉันยกเว้นโฟลเดอร์ที่ถูกโค่นล้มที่ถูกซ่อนและ sub-directory ของพวกเขา (โดยใช้คำสั่ง exec กับไดเรกทอรีที่ส่งคืนจากคำสั่ง find ) ..

TIA

คำตอบ:


25
find . -type d -not \( -name .svn -prune \)

ฉันจะไปกับคนนี้แม้ว่าพวกเขาทั้งหมดดูเหมือนจะทำงาน
34499 Jason ลง Down

ฉันเคยใช้ -prune หามาก่อน แต่ฉันไม่เคยเห็นเคล็ดลับ \ (... \) ขอบคุณ
Rory

คุณบอกได้ไหมว่ามันจะทำงานอย่างไรในแอพ node.js / express ที่ฉันต้องการแยกโหนด - โมดูลออกจากการนับบรรทัด ฉันพยายามที่ find . -name '*.js' -not \( -name 'node_modules' -prune \) | xargs wc -l ไม่ประสบความสำเร็จ ...
shredding

เพื่อตอบสนองต่อ @shredding เกี่ยวกับแอป Node.js / Express และไม่รวมไดเรกทอรี node_modules จากผลลัพธ์ของ find สิ่งนี้ใช้ได้กับฉัน: find -name ' .test.js ' -not (-wholename '* node_modules ') ... เนื่องจากการทดสอบที่ฉันต้องการเรียกใช้จะถูกต่อท้ายด้วย ".test.js"
puzzleslune

จะใช้งานได้โดย-type dไม่ ฉันต้องการค้นหาไฟล์ทั้งหมด แต่ไม่รวม ".git" dir ซ้ำ
James Mitch

6

เกี่ยวกับอะไร

find . -type d |  grep -v '.svn'

สูญเสียความสามารถในการใช้การดำเนินการค้นหาใด ๆ
David Pashley

ใช่ แต่ห่วงเล็ก ๆ น้อย ๆ ที่ดีจะเป็นอย่างไร :) ไฟล์ในfind . -type d | grep -v '.svn'; ทำเสียงสะท้อนอะไรก็ได้ เสร็จแล้ว
wazoox

6

สิ่งที่เกี่ยวกับ-pathตัวเลือกในการค้นหา?

find . -type d ! -path '*.svn*'

1
พลาดจากคำพูดปิด มีโอกาสภายนอกที่อักขระตัวแทนอาจโลภมากเกินไป
Dan Carley

2

หา -path './tmp' -prune -o .......


2

คุณสามารถใช้:

find . -type d -not -wholename '*.svn*' 

มันถอด * จากด้านหน้าของคำตอบ ... ควรจะหา -type d -not -wholename ' /.svn/ ' (นั่นคือ wholename squote เครื่องหมายดอกจันสแลช dot svn slash เครื่องหมายดอกจันเครื่องหมายดอกจัน)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.