Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

คำสั่ง find, locate, which, whereis: ค้นหาไฟล์ใน Linux

ใน Linux มีหลายวิธีค้นหาไฟล์จากเทอร์มินัล คำสั่งหลัก 4 ตัวคือ find, locate, which, whereis มาดูความคล้ายคลึงและความต่างกัน

1. find

ค้นหาไฟล์ในไดเรกทอรีที่ระบุ (หรือไดเรกทอรีปัจจุบันถ้าไม่ระบุ) รองรับเงื่อนไขหลากหลาย: ชื่อไฟล์, เวลา (timestamp), สิทธิ์, ขนาด, ประเภท, เจ้าของ และรองรับ Regular Expression

ตัวอย่าง: ค้นหาไฟล์นามสกุล .txt ในไดเรกทอรีปัจจุบัน

find . -name "*.txt"

2. locate

ค้นหาจากฐานข้อมูล mlocate.db (อยู่ที่ /var/lib/mlocate/mlocate.db) ซึ่ง cron อัปเดตทุกเช้า ทำให้เร็วกว่า find มาก

locate filename

แต่ไฟล์ที่เพิ่งสร้างในวันนั้นยังไม่มีในฐานข้อมูล ต้องรัน sudo updatedb ก่อนจึงจะค้นพบ

3. which

ค้นหา พาธเต็มของไฟล์รันได้ (executable) ในโฟลเดอร์ที่อยู่ในตัวแปร $PATH และ $MANPATH

  • which cmd: แสดงพาธแรกที่เจอ
  • which -a cmd: แสดงทุกพาธที่เจอ
  • which cmd1 cmd2: ค้นหลายคำสั่งพร้อมกัน

4. whereis

ค้นหาข้อมูล 3 อย่างของ executable:

  1. พาธไบนารี (binary)
  2. พาธซอร์สโค้ด (source code)
  3. พาธคู่มือ (manual page)
whereis bzgrep

สวิตช์ควบคุมการค้นหา:

  • -b: ค้นเฉพาะไบนารี, -B ระบุโฟลเดอร์ค้นหาไบนารี
  • -s: ค้นเฉพาะซอร์ส, -S ระบุโฟลเดอร์ค้นหาซอร์ส
  • -m: ค้นเฉพาะ manual, -M ระบุโฟลเดอร์ค้นหา manual
  • -f: ระบุรายการไบนารีที่ต้องการค้น
  • -l: แสดงโฟลเดอร์ทั้งหมดที่ whereis ใช้ค้นหา

สรุป

เครื่องมือค้นหาในเทอร์มินัลมีมากมาย เข้าใจข้อแตกต่างจะช่วยเลือกใช้งานได้ถูกต้อง: find ยืดหยุ่นที่สุด, locate เร็วแต่อัปเดตช้า, which สำหรับ executable ใน PATH, whereis สำหรับ binary/source/man รวมกัน รายละเอียดเพิ่มเติมดูใน man page ของแต่ละคำสั่ง