ฉันจะค้นหาชื่อไดเรกทอรีซ้ำด้วยสตริงซ้ำโดยที่สตริงเป็นเพียงส่วนหนึ่งของชื่อไดเรกทอรีได้อย่างไร


73

ฉันจะค้นหาชื่อไดเรกทอรีซ้ำด้วยสตริงเฉพาะโดยที่สตริงเป็นส่วนหนึ่งของชื่อไดเรกทอรีได้อย่างไร

ตัวอย่างเช่น: ชื่อไดเรกทอรีคือ "8.0.3-99966_en" แต่ฉันต้องการค้นหาไดเรกทอรีซ้ำด้วยสตริง "99966"

คำตอบ:


95

คุณสามารถใช้findคำสั่ง:

find YOUR_STARTING_DIRECTORY -type d -name "*99966*" -print

ตัวอย่าง:

find ~ -type d -name "*99966*" -print

ควรหาไดเรกทอรีทั้งหมด ( -type d) เริ่มต้นจากไดเรกทอรีบ้านของคุณ ( ~) ที่มีชื่อของพวกเขาที่มีสตริง "99966" ( -name "*99966*") และส่งออกพวกเขา ( -print)


ฉันจะแยกไดเรกทอรีบางอย่างออกจากการค้นหาได้อย่างไร ฉันต้องการค้นหา / แต่ฉันได้รับผลลัพธ์มากมายจาก / proc ซึ่งฉันไม่สนใจ
Kozuch

@ Kuzuch (หลังจากนั้นไม่นาน!): คุณสามารถใช้ grep เชิงลบ, วางท่อการค้นหา sinf ลงในคำยกย่องเช่น: find <whething> | grep -v "/ proc" ซึ่งจะกรองบรรทัดทั้งหมดที่มีสตริงการค้นหา
Juan Lanus

19

ในการหลีกเลี่ยงผลลัพธ์ "ปฏิเสธสิทธิ์" ทั้งหมดคุณสามารถใช้:

find / -type d -name "*99966*" -print 2>/dev/null

ดูบทความนี้ในอุปกรณ์ nullและหนึ่งในสตรีมมาตรฐานนี้สำหรับข้อมูลเพิ่มเติม


ทำงานให้ฉัน :) ~
smatthewenglish

8

คุณสามารถไพพ์เอาต์พุตเพื่อgrepให้ไฮไลต์ชื่อไดเร็กทอรี
Something like

find / -type d | grep "directory name"

ตัว/บ่งชี้เพื่อค้นหาคอมพิวเตอร์ทั้งหมด


@ ซานนะคุณพูดถูกฉันได้แก้ไขคำตอบแล้ว ขอบคุณสำหรับการชี้ให้เห็น
Collin

3

find | egrep stringวิธีง่ายๆในการทำเช่นนี้คือการใช้ หากมีการเข้าชมมากเกินไปให้ใช้การ-type dตั้งค่าสถานะเพื่อค้นหา เรียกใช้คำสั่งที่จุดเริ่มต้นของแผนผังไดเรกทอรีที่คุณต้องการค้นหาหรือคุณจะต้องระบุไดเรกทอรีเป็นอาร์กิวเมนต์findด้วย

ls -laR | egrep ^dวิธีการทำก็คือการใช้

และlocateคำสั่งก็มีประโยชน์เช่นกัน:locate string

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