ใช้ "find" ค้นหาข้อความในไฟล์ ใช้ "locate"
เป็นการค้นหาพื้นฐาน โดยใช้คำสั่ง find คำสั่งต่อไปนี้ใช้ค้นหาคำที่ต้องการใน directory ปัจจุบัน รวมถึง subdirectory ทั้งหมด  find -iname "filename"   ถ้าใช้ -iname แทน -name จะหาทั้งตัวพิมพ์เล็กและใหญ่ แต่ถ้า -name จะหาตามที่คุณพิมพ์เป๊ะๆ ถ้าอยากค้นหาทั้งระบบ ให้เพิ่ม modifier / ในคำค้นหา เพื่อให้คำสั่ง find ค้นหาในทุก directory โดยเริ่มจาก root directory   find / -iname "filename"    คุณกำหนดได้ ว่าอยากเจาะจงค้นหาใน directory ไหน โดยเปลี่ยน / เป็น path ของ directory เช่น /home/pat  หรือใช้ . แทน / เพื่อกำหนดให้ค้นหาเฉพาะใน directory ปัจจุบัน และ subdirectory ข้างใน * ในการค้นหาทุกอย่างที่ตรงกับส่วนใดส่วนหนึ่งของคำค้นหา. อักขระตัวแทน * เหมาะสำหรับค้นหาไฟล์ที่ไม่รู้ชื่อเต็ม หรืออยากหาไฟล์ด้วยคำลงท้าย  find /home/pat -iname "*.conf"    ใช้คำสั่งข้างบนแล้วจะได้ผลลัพธ์เป็นไฟล์ .conf ทั้งหมดในโฟลเดอร์ผู้ใช้ชื่อ Pat (และ subdirectory ทั้งหมด) หรือใช้หาทุกอย่างที่ตรงกับบางส่วนของชื่อไฟล์ เช่น ถ้ามีเอกสารเกี่ยวกับ wikiHow เยอะ ก็ให้หาโดยพิมพ์ว่า "*wiki*" ถ้าผลการค้นหาออกมาเต็มไปหมด ก็อยากจะเจออะไรที่กำลังค้นหาจริงๆ แบบนี้ให้ใช้อักขระ | แล้วส่งต่อผลการค้นหาไปยังโปรแกรมฟิลเตอร์ให้ "less" คือแสดงผลการค้นหาน้อยลง เท่านี้คุณก็เลื่อนดูและกรองผลการค้นหาได้สะดวกทันใจ  find /home/pat -iname "*.conf" | less คุณใช้ modifier ให้ได้เฉพาะผลการค้นหาบางประเภทก็ได้ เช่น ค้นหาไฟล์ (f), directory (d), symbolic links (l), character devices (c) และ block devices (b) แค่ใช้ให้ถูก modifier  find / -type f -iname "filename" ถ้ามีไฟล์ชื่อเดียวกันเยอะ แต่รู้ขนาดไฟล์ที่ต้องการ ก็กรองผลการค้นหาด้วยขนาดไฟล์ได้เลย  find / -size +50M -iname "filename"    จะได้ผลการค้นหาเฉพาะไฟล์ที่ใหญ่ 50 MB ขึ้นไป ให้พิมพ์ + หรือ - เพื่อค้นหาไฟล์ที่ใหญ่หรือเล็กกว่านั้น ถ้าไม่พิมพ์ + หรือ - เท่ากับค้นหาไฟล์ขนาดที่กำหนด เป๊ะๆ  นอกจากนี้ยังกำหนดได้ด้วยว่าขนาดไฟล์เป็น bytes (c), kilobytes (k), megabytes (M), gigabytes (G) หรือ block เท่ากับ 512 byte (b) ซึ่งหน่วยของขนาดไฟล์นี้ถือว่าสำคัญมาก ห้ามพิมพ์ผิด ให้พิมพ์ operator -and, -or และ -not เพื่อรวมหลายประเภทการค้นหาเป็นประเภทเดียว  find /travelphotos -type f -size +200k -not -iname "*2015*"   คำสั่งนี้จะหาไฟล์ใน directory "travelphotos" ที่ใหญ่กว่า 200 KB แต่ไม่มีคำว่า "2015" ในชื่อไฟล์ ถ้าอยากค้นหาไฟล์ของผู้ใช้คนไหน หรือไฟล์ที่มีการอนุญาตสิทธิ์บางอย่าง ก็กำหนดได้เลย  find / -user pat -iname "filename" find / -group users -iname "filename" find / -perm 777 -iname "filename"   ตัวอย่างด้านบนเป็นการค้นหาโดยระบุชื่อผู้ใช้ กลุ่ม หรือการอนุญาตสิทธิ์ แต่ถ้าอยากละชื่อไฟล์ ให้ค้นเจอไฟล์ทั้งหมดที่ตรงกับประเภทการค้นหานั้นก็ได้ เช่น ใช้คำสั่ง find / -perm 777 แล้วจะเจอไฟล์ทั้งหมดที่ใช้การอนุญาตสิทธิ์แบบ 777 (คือไม่มีการจำกัดสิทธิ์) คุณรวมคำสั่ง find กับคำสั่งอื่นได้ จะได้ execute หรือใช้กับไฟล์ที่หาเจอ ให้คั่นคำสั่ง find กับคำสั่งที่ 2 ด้วย -exec flag แล้วจบบรรทัดด้วย {} \;  find . -type f -perm 777 -exec chmod 755 {} \;   ตัวอย่างนี้ใช้ค้นหาไฟล์ที่ใช้การอนุญาตสิทธิ์แบบ 777 ใน directory ปัจจุบัน (และ subdirectory ทั้งหมด) จากนั้นจะใช้คำสั่ง chmod เปลี่ยนการอนุญาตสิทธิ์เป็น 755 แทน grep ค้นหาชุดข้อความ (strings of text) ในไฟล์. ถ้ากำลังค้นหาไฟล์ที่มีวลีหรือชุดอักขระ ก็ให้ใช้คำสั่ง grep โดยคำสั่ง grep พื้นฐานจะมีฟอร์แมตดังนี้  grep -r -i "search query" /path/to/directory/     -r จะกำหนดให้ค้นหาแบบ "recursive" (ค้นหาซ้ำ) เพราะงั้นจะค้นหาใน directory ปัจจุบัน และ subdirectory ข้างในทั้งหมด จนเจอไฟล์ที่มีชุดข้อความหรืออักขระที่ว่า  -i ใช้กำหนดให้แสดงผลการค้นหาทั้งตัวพิมพ์เล็กและใหญ่ ถ้าอยากค้นหาแบบเจาะจงตัวพิมพ์ ก็ไม่ต้องใส่ -i operator เวลาค้นหาด้วย grep เหมือนที่ผ่านมา จะเห็นชื่อไฟล์ตามด้วยข้อความ โดยมีการเน้นส่วนที่ตรงกับคำค้นหา คุณสามารถซ่อนข้อความที่ตรงกัน ให้แสดงผลแค่ชื่อและ path ของไฟล์ได้ โดยใช้คำสั่งดังต่อไปนี้  grep -r -i "search query" /path/to/directory/ | cut -d: -f1 คำสั่ง grep จะแสดงผลเป็น error ตอนพยายามเข้าถึงโฟลเดอร์ที่ไม่ได้รับอนุญาตสิทธิ์ หรือเจอโฟลเดอร์ว่าง แต่คุณส่งข้อความ error ไปที่ /dev/null ได้ เพื่อซ่อนไม่ให้แสดงผลขึ้นมา  grep -r -i "search query" /path/to/directory/ 2>/dev/null locate. ปกติคำสั่ง locate จะทำงานเร็วกว่า find เพราะทำงานจากฐานข้อมูล (database) ของโครงสร้างไฟล์เลย ซึ่งไม่ใช่ว่า Linux ทุกเวอร์ชั่นจะมาพร้อมฟังก์ชั่น locate นี้ เพราะงั้นต้องป้อนคำสั่งต่อไปนี้ เพื่อติดตั้งซะก่อน  พิมพ์ sudo apt-get update แล้วกด ↵ Enter  ถ้าใช้ Debian และ Ubuntu ให้พิมพ์ sudo apt-get install mlocate แล้วกด ↵ Enter ถ้ามี locate ติดตั้งอยู่แล้ว จะเห็นข้อความ mlocate is already the newest version  ถ้าใช้ Arch Linux ให้ใช้ pacman package manager pacman -Syu mlocate  ถ้าใช้ Gentoo ให้ใช้ emerge emerge mlocate locate. คุณใช้คำสั่ง locate หาอะไรไม่ได้จนกว่าจะสร้างและอัพเดทฐานข้อมูลซะก่อน ปกติจะเกิดขึ้นอัตโนมัติทุกวัน แต่คุณจะอัพเดทเองก็ได้เหมือนกัน ซึ่งเป็นเรื่องที่จำเป็น ถ้าอยากใช้ locate ทันที พิมพ์ sudo updatedb แล้วกด ↵ Enter locate ค้นหาแบบพื้นฐาน. คำสั่ง locate นั้นทำงานรวดเร็วทันใจ แต่ไม่มีตัวเลือกเยอะเท่าคำสั่ง find คุณใช้ค้นหาไฟล์ตามปกติได้เหมือนคำสั่ง find เลย  locate -i "*.jpg"    คำสั่งนี้ใช้ค้นหาไฟล์ที่ลงท้ายด้วย .jpg จากทั้งระบบ โดยอักขระตัวแทน * จะทำหน้าที่เดิมเหมือนตอนใช้คำสั่ง find   -i จะเหมือนกับคำสั่ง find ตรงที่แสดงผลทั้งตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ถ้าได้ผลการค้นหามาเยอะเกินไป ก็คัดออกได้โดยใช้ตัวเลือก -n ตามด้วยจำนวนผลการค้นหาที่อยากให้แสดง  locate -n 20 -i "*.jpg"    ตามตัวอย่างจะแสดงผลแค่ 20 ผลการค้นหาแรกที่ตรงกับคำค้นหา หรือพิมพ์ | เพื่อส่งผลการค้นหาไปที่ less เพื่อให้เลื่อนหาง่ายขึ้น
ค้นหาด้วยชื่อไฟล์. กำหนดให้ค้นหาโดยเริ่มจากใน root directory. ใช้อักขระตัวแทน (wildcard character) . จัดการผลการค้นหาได้ง่ายยิ่งขึ้น. เจาะจงประเภทของผลการค้นหา. กรองผลการค้นหาด้วยขนาดไฟล์. ใช้ตรรกะบูลีน (boolean operator) ควบรวมฟิลเตอร์กรองผลลัพธ์. ค้นหาไฟล์โดยใช้ชื่อเจ้าของหรือการอนุญาตสิทธิ์. ควบรวมคำสั่งที่จะใช้ตอนเจอไฟล์. ใช้คำสั่ง . ตัดข้อความที่ไม่จำเป็น. ซ่อนข้อความ error. ติดตั้งฟังก์ชั่น . อัพเดทฐานข้อมูล . ใช้ . จำกัดผลการค้นหา.
https://www.wikihow.com/Find-a-File-in-Linux https://www.wikihow.com/Find-a-File-in-Linux https://www.wikihow.com/Find-a-File-in-Linux
Using "find" Searching for Text in Files Using "locate"