จะค้นหาไฟล์ที่มีคำเฉพาะได้อย่างไร


37

จะค้นหาไฟล์ที่มีคำเฉพาะได้อย่างไร


5
คุณหมายถึง NAMES ของไฟล์ค้นหาที่มีคำเฉพาะอยู่หรือไม่ เช่น: ไฟล์ทั้งหมดที่มีคำว่าสนุกในชื่อ,, FUN_time.txt FUN_stuff.txt หรือค้นหาภายในไฟล์เพื่อหาคำที่เฉพาะเจาะจง?
dr_willis

คำตอบ:


51

ด้วยบรรทัดคำสั่งคุณมีหลายตัวเลือก 3 ฉันใช้มากที่สุดคือ ...

  1. locate {part_of_word}

    สิ่งนี้ถือว่าฐานข้อมูล locator ของคุณเป็นข้อมูลล่าสุด แต่คุณสามารถอัปเดตสิ่งนี้ด้วยตนเองด้วย: sudo updatedb

  2. grepตามที่อธิบายโดย dr_willis หนึ่งคำพูด: -Rหลังจากgrepค้นหาในไดเรกทอรีด้วย ตัวอย่าง:

    cd\
    grep -R {something_to_look_for} {where_to_look_in}
    
  3. find . -name '*{part_of_word}*' -print

ที่ไหน.เป็นไดเรกทอรีที่คุณอยู่ในขณะนี้และ*เป็นสัญลักษณ์แทน

โอ้และคุณยังสามารถรวมสิ่งเหล่านี้ ตัวอย่าง: locate {something}|grep {some_part_of_something}|more

ถ้าฉันจำได้ถูกต้อง: locateเป็นฐานข้อมูลที่เร็วที่สุด (สมมติว่าฐานข้อมูลของคุณเป็นรุ่นล่าสุด) และfindช้าที่สุด และgrepมีความซับซ้อนมากที่สุด แต่ก็มีความหลากหลายมากที่สุดเนื่องจากคุณสามารถใช้ regexes ได้



4

คำสั่ง grep ใช้กันโดยทั่วไปสำหรับสิ่งนี้

รูปแบบชื่อไฟล์ grep

และ grep สามารถทำการค้นหาที่ซับซ้อนมากได้

willis@Cow:~$ grep --help
Usage: grep [OPTION]... PATTERN [FILE]...
Search for PATTERN in each FILE or standard input.
PATTERN is, by default, a basic regular expression (BRE).
Example: grep -i 'hello world' menu.h main.c

3
หรือคุณสามารถทำ "คำ rgrep" เพื่อค้นหาทุก ๆ ไฟล์และไดเรกทอรีย่อยแบบซ้ำ ๆ สำหรับ "คำ"
Jeremy Bicha

4

คุณสามารถใช้grepเพื่อแสดงรายการไฟล์ที่มีwordอยู่ในdirectory:

grep -Ril word directory

ที่นี่:
* -Rค้นหาไฟล์ซ้ำในไดเรกทอรีย่อย
* -iละเว้นกรณีข้อความ
* -lแสดงชื่อไฟล์แทนส่วนเนื้อหาไฟล์ (หมายเหตุ: -Lแสดงชื่อไฟล์ที่ไม่มีคำ)

ใช้man grepเพื่อรับตัวเลือกทั้งหมด


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