ดาวน์โหลดบทความ ดาวน์โหลดบทความ

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

วิธีการ 1
วิธีการ 1 ของ 3:

ใช้ "find"

ดาวน์โหลดบทความ
  1. เป็นการค้นหาพื้นฐาน โดยใช้คำสั่ง find คำสั่งต่อไปนี้ใช้ค้นหาคำที่ต้องการใน directory ปัจจุบัน รวมถึง subdirectory ทั้งหมด [1]
    find -iname "filename" 
    
    • ถ้าใช้ -iname แทน -name จะหาทั้งตัวพิมพ์เล็กและใหญ่ แต่ถ้า -name จะหาตามที่คุณพิมพ์เป๊ะๆ
  2. ถ้าอยากค้นหาทั้งระบบ ให้เพิ่ม modifier / ในคำค้นหา เพื่อให้คำสั่ง find ค้นหาในทุก directory โดยเริ่มจาก root directory
    find / -iname "filename" 
    
    • คุณกำหนดได้ ว่าอยากเจาะจงค้นหาใน directory ไหน โดยเปลี่ยน / เป็น path ของ directory เช่น /home/pat
    • หรือใช้ . แทน / เพื่อกำหนดให้ค้นหาเฉพาะใน directory ปัจจุบัน และ subdirectory ข้างใน
  3. * ในการค้นหาทุกอย่างที่ตรงกับส่วนใดส่วนหนึ่งของคำค้นหา . อักขระตัวแทน * เหมาะสำหรับค้นหาไฟล์ที่ไม่รู้ชื่อเต็ม หรืออยากหาไฟล์ด้วยคำลงท้าย
    find /home/pat -iname "*.conf" 
    
    • ใช้คำสั่งข้างบนแล้วจะได้ผลลัพธ์เป็นไฟล์ .conf ทั้งหมดในโฟลเดอร์ผู้ใช้ชื่อ Pat (และ subdirectory ทั้งหมด)
    • หรือใช้หาทุกอย่างที่ตรงกับบางส่วนของชื่อไฟล์ เช่น ถ้ามีเอกสารเกี่ยวกับ wikiHow เยอะ ก็ให้หาโดยพิมพ์ว่า "*wiki*"
  4. ถ้าผลการค้นหาออกมาเต็มไปหมด ก็อยากจะเจออะไรที่กำลังค้นหาจริงๆ แบบนี้ให้ใช้อักขระ | แล้วส่งต่อผลการค้นหาไปยังโปรแกรมฟิลเตอร์ให้ "less" คือแสดงผลการค้นหาน้อยลง เท่านี้คุณก็เลื่อนดูและกรองผลการค้นหาได้สะดวกทันใจ
    find /home/pat -iname "*.conf" 
     | 
    less
  5. คุณใช้ modifier ให้ได้เฉพาะผลการค้นหาบางประเภทก็ได้ เช่น ค้นหาไฟล์ ( f ), directory ( d ), symbolic links ( l ), character devices ( c ) และ block devices ( b ) แค่ใช้ให้ถูก modifier
    find / -type f -iname "filename" 
    
  6. ถ้ามีไฟล์ชื่อเดียวกันเยอะ แต่รู้ขนาดไฟล์ที่ต้องการ ก็กรองผลการค้นหาด้วยขนาดไฟล์ได้เลย
    find / -size +50M -iname "filename" 
    
    • จะได้ผลการค้นหาเฉพาะไฟล์ที่ใหญ่ 50 MB ขึ้นไป ให้พิมพ์ + หรือ - เพื่อค้นหาไฟล์ที่ใหญ่หรือเล็กกว่านั้น ถ้าไม่พิมพ์ + หรือ - เท่ากับค้นหาไฟล์ขนาดที่กำหนด เป๊ะๆ
    • นอกจากนี้ยังกำหนดได้ด้วยว่าขนาดไฟล์เป็น bytes ( c ), kilobytes ( k ), megabytes ( M ), gigabytes ( G ) หรือ block เท่ากับ 512 byte ( b ) ซึ่งหน่วยของขนาดไฟล์นี้ถือว่าสำคัญมาก ห้ามพิมพ์ผิด
  7. ใช้ตรรกะบูลีน (boolean operator) ควบรวมฟิลเตอร์กรองผลลัพธ์. ให้พิมพ์ operator -and , -or และ -not เพื่อรวมหลายประเภทการค้นหาเป็นประเภทเดียว [2]
    find /travelphotos -type f -size +200k -not -iname "*2015*" 
    
    • คำสั่งนี้จะหาไฟล์ใน directory "travelphotos" ที่ใหญ่กว่า 200 KB แต่ไม่มีคำว่า "2015" ในชื่อไฟล์
  8. ค้นหาไฟล์โดยใช้ชื่อเจ้าของหรือการอนุญาตสิทธิ์. ถ้าอยากค้นหาไฟล์ของผู้ใช้คนไหน หรือไฟล์ที่มีการอนุญาตสิทธิ์บางอย่าง ก็กำหนดได้เลย
    find / -user pat -iname "filename" 
    find / -group users -iname "filename" 
    find / -perm 777 
    -iname "filename" 
    
    • ตัวอย่างด้านบนเป็นการค้นหาโดยระบุชื่อผู้ใช้ กลุ่ม หรือการอนุญาตสิทธิ์ แต่ถ้าอยากละชื่อไฟล์ ให้ค้นเจอไฟล์ทั้งหมดที่ตรงกับประเภทการค้นหานั้นก็ได้ เช่น ใช้คำสั่ง find / -perm 777 แล้วจะเจอไฟล์ทั้งหมดที่ใช้การอนุญาตสิทธิ์แบบ 777 (คือไม่มีการจำกัดสิทธิ์) [3]
  9. คุณรวมคำสั่ง find กับคำสั่งอื่นได้ จะได้ execute หรือใช้กับไฟล์ที่หาเจอ ให้คั่นคำสั่ง find กับคำสั่งที่ 2 ด้วย -exec flag แล้วจบบรรทัดด้วย {} \;
    find . -type f -perm 777 
    -exec chmod 755 
     {} 
     \; 
    
    • ตัวอย่างนี้ใช้ค้นหาไฟล์ที่ใช้การอนุญาตสิทธิ์แบบ 777 ใน directory ปัจจุบัน (และ subdirectory ทั้งหมด) จากนั้นจะใช้คำสั่ง chmod เปลี่ยนการอนุญาตสิทธิ์เป็น 755 แทน
    โฆษณา
วิธีการ 2
วิธีการ 2 ของ 3:

ใช้ "locate"

ดาวน์โหลดบทความ
  1. 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
  2. locate . คุณใช้คำสั่ง locate หาอะไรไม่ได้จนกว่าจะสร้างและอัพเดทฐานข้อมูลซะก่อน ปกติจะเกิดขึ้นอัตโนมัติทุกวัน แต่คุณจะอัพเดทเองก็ได้เหมือนกัน ซึ่งเป็นเรื่องที่จำเป็น ถ้าอยากใช้ locate ทันที [4]
    • พิมพ์ sudo updatedb แล้วกด Enter
  3. locate ค้นหาแบบพื้นฐาน . คำสั่ง locate นั้นทำงานรวดเร็วทันใจ แต่ไม่มีตัวเลือกเยอะเท่าคำสั่ง find คุณใช้ค้นหาไฟล์ตามปกติได้เหมือนคำสั่ง find เลย
    locate -i "*.jpg" 
    
    • คำสั่งนี้ใช้ค้นหาไฟล์ที่ลงท้ายด้วย .jpg จากทั้งระบบ โดยอักขระตัวแทน * จะทำหน้าที่เดิมเหมือนตอนใช้คำสั่ง find
    • -i จะเหมือนกับคำสั่ง find ตรงที่แสดงผลทั้งตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก
  4. ถ้าได้ผลการค้นหามาเยอะเกินไป ก็คัดออกได้โดยใช้ตัวเลือก -n ตามด้วยจำนวนผลการค้นหาที่อยากให้แสดง
    locate -n 20 
    -i "*.jpg" 
    
    • ตามตัวอย่างจะแสดงผลแค่ 20 ผลการค้นหาแรกที่ตรงกับคำค้นหา
    • หรือพิมพ์ | เพื่อส่งผลการค้นหาไปที่ less เพื่อให้เลื่อนหาง่ายขึ้น
    โฆษณา
วิธีการ 3
วิธีการ 3 ของ 3:

ค้นหาข้อความในไฟล์

ดาวน์โหลดบทความ
  1. grep ค้นหาชุดข้อความ (strings of text) ในไฟล์ . ถ้ากำลังค้นหาไฟล์ที่มีวลีหรือชุดอักขระ ก็ให้ใช้คำสั่ง grep โดยคำสั่ง grep พื้นฐานจะมีฟอร์แมตดังนี้
    grep -r -i "search query" 
    /path/to/directory/
    • -r จะกำหนดให้ค้นหาแบบ "recursive" (ค้นหาซ้ำ) เพราะงั้นจะค้นหาใน directory ปัจจุบัน และ subdirectory ข้างในทั้งหมด จนเจอไฟล์ที่มีชุดข้อความหรืออักขระที่ว่า
    • -i ใช้กำหนดให้แสดงผลการค้นหาทั้งตัวพิมพ์เล็กและใหญ่ ถ้าอยากค้นหาแบบเจาะจงตัวพิมพ์ ก็ไม่ต้องใส่ -i operator
  2. เวลาค้นหาด้วย grep เหมือนที่ผ่านมา จะเห็นชื่อไฟล์ตามด้วยข้อความ โดยมีการเน้นส่วนที่ตรงกับคำค้นหา คุณสามารถซ่อนข้อความที่ตรงกัน ให้แสดงผลแค่ชื่อและ path ของไฟล์ได้ โดยใช้คำสั่งดังต่อไปนี้
    grep -r -i "search query" 
    /path/to/directory/ | 
    cut -d: -f1
  3. คำสั่ง grep จะแสดงผลเป็น error ตอนพยายามเข้าถึงโฟลเดอร์ที่ไม่ได้รับอนุญาตสิทธิ์ หรือเจอโฟลเดอร์ว่าง แต่คุณส่งข้อความ error ไปที่ /dev/null ได้ เพื่อซ่อนไม่ให้แสดงผลขึ้นมา [5]
    grep -r -i "search query" 
    /path/to/directory/ 2 
    >/dev/null
    โฆษณา

เกี่ยวกับวิกิฮาวนี้

มีการเข้าถึงหน้านี้ 19,271 ครั้ง

บทความนี้เป็นประโยชน์กับคุณไหม

โฆษณา