ยกเว้นไดเร็กทอรีใน Linux Find

Ykwen Direkthxri Ni Linux Find



เมื่อทำงานกับ Linux คุณอาจได้รับอินสแตนซ์ที่คุณต้องการค้นหาไฟล์ในเครื่องของคุณอย่างรวดเร็ว Linux มีคำสั่งการค้นหาต่างๆ รวมถึงคำสั่ง 'find' ที่ให้คุณค้นหาไฟล์ที่ต้องการ ข้อเสียเปรียบเพียงประการเดียวคือคำสั่งจะแสดงผลความยุ่งเหยิงและไฟล์จำนวนมาก อย่างไรก็ตาม หากคุณแน่ใจว่าไฟล์เป้าหมายไม่ได้อยู่ในไดเร็กทอรีที่กำหนด คุณสามารถแยกไฟล์นั้นออกได้ในคำสั่ง 'find' เพื่อลดผลลัพธ์การค้นหา

โพสต์นี้ครอบคลุมถึงคำสั่ง 'find' และวิธีการทำงาน นอกจากนี้ เราจะดูว่าคุณสามารถใช้คำสั่งนี้ได้อย่างไรในขณะที่ไม่รวมไดเร็กทอรีใน Linux อ่านต่อ!

การทำงานกับคำสั่งค้นหา

คำสั่ง 'find' ใน Linux ช่วยค้นหาไฟล์และไดเร็กทอรีเพื่อหลีกเลี่ยงการค้นหาด้วยตนเอง มันใช้ไวยากรณ์ต่อไปนี้:







ค้นหา <พาธไปยังไฟล์> <นิพจน์> <ตัวเลือก> <เป้าหมาย>

ต่อไปนี้คือตัวอย่างที่เราพยายามค้นหาไฟล์ชื่อ “linuxhint.c” ในโฮมไดเร็กตอรี่:





เอาต์พุตให้เส้นทางที่แน่นอนเพื่อค้นหาไฟล์เป้าหมาย สมมติว่าเราต้องการค้นหาไฟล์โดยใช้รูปแบบ สมมติว่าเราต้องการค้นหาไฟล์ข้อความใน เอกสาร/ บนระบบ Linux ของเรา เราระบุคำสั่งของเราดังที่แสดงต่อไปนี้:





สังเกตว่าคำสั่ง 'find' แสดงผลไดเร็กทอรีทั้งหมดที่มีไฟล์ข้อความอย่างไร นั่นเป็นตัวอย่างง่ายๆ ของการใช้คำสั่ง 'find' ของ Linux



วิธียกเว้นไดเร็กทอรีใน Linux Find

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

1. ตัวเลือกลูกพรุน

สำหรับการสาธิตเราใช้ ลินุกซ์ฮินท์/ . เราจะเห็นว่ามีไดเร็กทอรีย่อย 3 ไดเร็กทอรี ดังภาพต่อไปนี้

เมื่อใช้กับ -print ตัวเลือก 'prune' จะช่วยแยกไดเร็กทอรีย่อยที่ระบุเมื่อทำงานกับคำสั่ง 'find' ในภาพก่อนหน้า เราสามารถใช้คำสั่ง 'find' และกำหนดเส้นทางไปยังไดเร็กทอรี Linuxhint จากนั้น ระบุเพื่อแยก dir2 ออกจากผลลัพธ์การค้นหา

เราดำเนินการคำสั่งของเราดังนี้:

ค้นหา /home/kyle/Desktop/linuxhint/ -path /home/kyle/Desktop/linuxhint/dir2 -prune -o -print

สังเกตว่า dir2 ไม่แสดงที่ใดในเอาต์พุตซึ่งยืนยันว่าเราจัดการเพื่อแยกออกได้อย่างไร

เรายังสามารถดำเนินการคำสั่งเดียวกันในเวอร์ชันที่สั้นลงดังที่แสดงต่อไปนี้:

คุณยังสามารถยกเว้นไดเร็กทอรีจำนวนมาก เราใช้ -o ตัวเลือก ตัวอย่างต่อไปนี้ไม่รวม dir1 และ dir3 ให้เหลือเพียง dir2 หากคุณแน่ใจว่าไฟล์หรือโฟลเดอร์ที่คุณต้องการค้นหาไม่ได้อยู่ในไดเร็กทอรีอื่น ตัวเลือกนี้จะลดผลลัพธ์การค้นหา

2. ผ่านตัวเลือก 'ไม่'

ในการค้นหา คุณสามารถเพิ่ม 'ไม่' เพื่อระบุไดเร็กทอรีที่จะยกเว้น การใช้งานนั้นตรงไปตรงมามากกว่าตัวเลือกลูกพรุน

นี่คือไวยากรณ์ที่จะใช้:

ค้นหา [เส้นทาง] -type f -not -path '*/directory-to-exclude/*'

สมมติว่าเราต้องการยกเว้น dir1 ในผลลัพธ์การค้นหา 'ค้นหา' ที่เราใช้กับตัวเลือกลูกพรุน เราดำเนินการคำสั่งดังต่อไปนี้:

หา . -type f -ไม่ -path '*/dir2/*'

เราได้ผลลัพธ์เดียวกันกับเมื่อใช้ตัวเลือกลูกพรุน ไม่รวมไดเร็กทอรีที่ระบุ เฉพาะไดเร็กทอรีย่อยที่เหลือเท่านั้นที่ปรากฏในผลลัพธ์การค้นหา

3. ผ่านทาง “!” ตัวเลือก

วิธีสุดท้ายของการยกเว้นไดเร็กทอรีในคำสั่ง 'find' ของ Linux คือการเพิ่ม '!' ผู้ประกอบการ มันทำงานเหมือนกับตัวดำเนินการ 'not' และไวยากรณ์ของมันเกือบจะเหมือนกัน

ค้นหา [เส้นทาง] -type f ! -path '*/directory-to-exclude/*'

สมมติว่าเราทำซ้ำตัวอย่างก่อนหน้านี้เพื่อแยก dir2 โดยใช้ '!' ผู้ประกอบการ เรายังคงได้รับผลลัพธ์เดียวกัน มีเพียงส่วนของคำสั่งที่เราใช้เท่านั้นที่เปลี่ยนไป

นี่เป็นสามวิธีในการยกเว้นไดเร็กทอรีในคำสั่ง 'find' ของ Linux

บทสรุป

คำสั่ง 'find' ของ Linux มีประโยชน์ในการค้นหาไฟล์และโฟลเดอร์อย่างรวดเร็ว จะดีขึ้นเนื่องจากคุณสามารถยกเว้นไดเร็กทอรีในคำสั่งค้นหาเพื่อลดผลลัพธ์การค้นหา หากต้องการยกเว้นไดเร็กทอรี คุณสามารถใช้ 'พรุน', 'ไม่' หรือ '!' ตัวเลือก. โพสต์นี้กล่าวถึงวิธีที่สามตัวเลือกทำงานร่วมกับตัวอย่างการยกเว้นไดเร็กทอรีที่กำหนด ลองดูสิ!