วิธีค้นหาไฟล์และโฟลเดอร์ใน Linux โดยใช้ Command Line
คนส่วนใหญ่ใช้โปรแกรมจัดการไฟล์แบบกราฟิกเพื่อค้นหาไฟล์ใน Linux เช่น Nautilus ใน Gnome, Dolphin ใน KDE และ Thunar ใน Xfce อย่างไรก็ตามมีหลายวิธีในการใช้บรรทัดคำสั่งเพื่อค้นหาไฟล์ใน Linux ไม่ว่าคุณจะใช้ตัวจัดการเดสก์ท็อปใดก็ตาม
ใช้คำสั่งค้นหา
คำสั่ง“ find” ช่วยให้คุณค้นหาไฟล์ที่คุณรู้จักชื่อไฟล์โดยประมาณ รูปแบบที่ง่ายที่สุดของคำสั่งจะค้นหาไฟล์ในไดเร็กทอรีปัจจุบันและเรียกซ้ำผ่านไดเร็กทอรีย่อยที่ตรงกับเกณฑ์การค้นหาที่ให้มา คุณสามารถค้นหาไฟล์ตามชื่อเจ้าของกลุ่มประเภทสิทธิ์วันที่และเกณฑ์อื่น ๆ
การพิมพ์คำสั่งต่อไปนี้ที่พรอมต์จะแสดงไฟล์ทั้งหมดที่พบในไดเร็กทอรีปัจจุบัน
หา.
จุดหลัง“ find” แสดงถึงไดเร็กทอรีปัจจุบัน
หากต้องการค้นหาไฟล์ที่ตรงกับรูปแบบเฉพาะให้ใช้-name
อาร์กิวเมนต์ คุณสามารถใช้อักขระเมตาชื่อไฟล์ (เช่น*
) แต่คุณควรใส่อักขระหลีก ( \
) ไว้ข้างหน้าหรือใส่ไว้ในเครื่องหมายคำพูด
ตัวอย่างเช่นหากเราต้องการค้นหาไฟล์ทั้งหมดที่ขึ้นต้นด้วย“ pro” ในไดเร็กทอรี Documents เราจะใช้cd Documents/
คำสั่งเพื่อเปลี่ยนเป็นไดเร็กทอรี Documents จากนั้นพิมพ์คำสั่งต่อไปนี้:
หา. - ชื่อโปร \ *
ไฟล์ทั้งหมดในไดเร็กทอรีปัจจุบันที่ขึ้นต้นด้วย“ pro” จะแสดงรายการ
หมายเหตุ: คำสั่ง find เป็นค่าเริ่มต้นที่คำนึงถึงตัวพิมพ์เล็กและใหญ่ หากคุณต้องการให้การค้นหาคำหรือวลีไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ให้ใช้-iname
ตัวเลือกกับคำสั่ง find เป็นเวอร์ชันที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ของ-name
คำสั่ง
หากfind
ไม่พบไฟล์ใด ๆ ที่ตรงกับเกณฑ์ของคุณระบบจะไม่สร้างเอาต์พุต
คำสั่ง find มีตัวเลือกมากมายสำหรับการปรับแต่งการค้นหา สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง find ให้เรียกใช้man find
ในหน้าต่าง Terminal แล้วกด Enter
ใช้คำสั่ง Locate
คำสั่ง locate เร็วกว่าคำสั่ง find เนื่องจากใช้ฐานข้อมูลที่สร้างไว้ก่อนหน้านี้ในขณะที่คำสั่ง find จะค้นหาในระบบจริงผ่านไดเร็กทอรีและไฟล์จริงทั้งหมด คำสั่ง locate ส่งคืนรายการชื่อพา ธ ทั้งหมดที่มีกลุ่มอักขระที่ระบุ
ฐานข้อมูลได้รับการอัปเดตเป็นระยะ ๆ จาก cron แต่คุณยังสามารถอัปเดตด้วยตัวเองได้ตลอดเวลาเพื่อให้คุณได้รับผลลัพธ์ล่าสุด ในการดำเนินการนี้ให้พิมพ์คำสั่งต่อไปนี้ที่พร้อมต์:
sudo ปรับปรุง b
ป้อนรหัสผ่านของคุณเมื่อได้รับแจ้ง
รูปแบบพื้นฐานของคำสั่ง locate ค้นหาไฟล์ทั้งหมดบนระบบไฟล์โดยเริ่มจาก root ที่มีเงื่อนไขการค้นหาทั้งหมดหรือบางส่วน
ค้นหา mydata
ตัวอย่างเช่นคำสั่งด้านบนพบไฟล์สองไฟล์ที่มี "mydata" และอีกไฟล์หนึ่งที่มี "data"
หากคุณต้องการค้นหาไฟล์หรือไดเร็กทอรีทั้งหมดที่มีเฉพาะเกณฑ์การค้นหาของคุณเท่านั้นให้ใช้-b
ตัวเลือกกับคำสั่ง locate ดังต่อไปนี้
ค้นหา -b '\ mydata'
แบ็กสแลชในคำสั่งด้านบนเป็นอักขระ globbing ซึ่งให้วิธีการขยายอักขระตัวแทนในชื่อไฟล์ที่ไม่เฉพาะเจาะจงลงในชุดชื่อไฟล์เฉพาะ สัญลักษณ์แทนคือสัญลักษณ์ที่สามารถแทนที่ด้วยอักขระหนึ่งตัวขึ้นไปเมื่อนิพจน์ได้รับการประเมิน สัญลักษณ์ตัวแทนที่พบบ่อยที่สุดคือเครื่องหมายคำถาม ( ?
) ซึ่งย่อมาจากอักขระเดี่ยวและเครื่องหมายดอกจัน ( *
) ซึ่งหมายถึงสตริงอักขระที่ต่อเนื่องกัน ในตัวอย่างข้างต้นแบ็กสแลชปิดใช้งานการแทนที่ "mydata" โดยนัยโดย "* mydata *" ดังนั้นคุณจะได้ผลลัพธ์ที่มี "mydata" เท่านั้น
คำสั่ง mlocate เป็นการใช้ locate ใหม่ มันทำดัชนีระบบไฟล์ทั้งหมด แต่ผลการค้นหาจะรวมเฉพาะไฟล์ที่ผู้ใช้ปัจจุบันสามารถเข้าถึงได้ เมื่อคุณอัปเดตฐานข้อมูล mlocate จะเก็บข้อมูลการประทับเวลาไว้ในฐานข้อมูล สิ่งนี้ช่วยให้ mlocate ทราบว่าเนื้อหาของไดเร็กทอรีมีการเปลี่ยนแปลงหรือไม่โดยไม่ต้องอ่านเนื้อหาอีกและทำให้การอัปเดตฐานข้อมูลเร็วขึ้นและไม่ต้องการฮาร์ดไดรฟ์ของคุณ
เมื่อคุณติดตั้ง mlocate ไฟล์ไบนารี / usr / bin / locate จะเปลี่ยนเป็นชี้ไปที่ mlocate ในการติดตั้ง mlocate หากยังไม่ได้รวมอยู่ในการแจกจ่าย Linux ของคุณให้พิมพ์คำสั่งต่อไปนี้ที่พร้อมต์
sudo apt-get install mlocate
หมายเหตุ: เราจะแสดงคำสั่งต่อคุณในบทความนี้ซึ่งช่วยให้คุณกำหนดตำแหน่งที่เรียกใช้งานสำหรับคำสั่งได้หากมีอยู่
คำสั่ง mlocate ไม่ได้ใช้ไฟล์ฐานข้อมูลเดียวกันกับคำสั่ง locate มาตรฐาน ดังนั้นคุณอาจต้องการสร้างฐานข้อมูลด้วยตนเองโดยพิมพ์คำสั่งต่อไปนี้ที่พร้อมต์:
sudo /etc/cron.daily/mlocate
คำสั่ง mlocate จะไม่ทำงานจนกว่าฐานข้อมูลจะถูกสร้างขึ้นด้วยตนเองหรือเมื่อเรียกใช้สคริปต์จาก cron
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง locate หรือ mlocate ให้พิมพ์man locate
หรือman mlocate
ในหน้าต่าง Terminal แล้วกด Enter หน้าจอวิธีใช้เดียวกันจะปรากฏขึ้นสำหรับทั้งสองคำสั่ง
ใช้คำสั่งใด
คำสั่ง "ซึ่ง" ส่งคืนพา ธ สัมบูรณ์ของไฟล์ปฏิบัติการที่เรียกเมื่อออกคำสั่ง สิ่งนี้มีประโยชน์ในการค้นหาตำแหน่งของไฟล์ปฏิบัติการสำหรับการสร้างทางลัดไปยังโปรแกรมบนเดสก์ท็อปบนแผงควบคุมหรือที่อื่น ๆ ในตัวจัดการเดสก์ท็อป ตัวอย่างเช่นการพิมพ์คำสั่งwhich firefox
จะแสดงผลลัพธ์ดังรูปด้านล่าง
ตามค่าเริ่มต้นคำสั่งจะแสดงเฉพาะปฏิบัติการที่ตรงกันแรก หากต้องการแสดงไฟล์ปฏิบัติการที่ตรงกันทั้งหมดให้ใช้-a
ตัวเลือกด้วยคำสั่ง:
ซึ่ง -a firefox
คุณสามารถค้นหาไฟล์ปฏิบัติการได้หลายรายการพร้อมกันดังแสดงในภาพต่อไปนี้ แสดงเฉพาะพา ธ ไปยังไฟล์ปฏิบัติการที่พบเท่านั้น ในตัวอย่างด้านล่างพบเฉพาะไฟล์ปฏิบัติการ“ ps” เท่านั้น
หมายเหตุ: คำสั่งที่ค้นหาตัวแปร PATH ของผู้ใช้ปัจจุบันเท่านั้น หากคุณค้นหาไฟล์ปฏิบัติการที่พร้อมใช้งานสำหรับผู้ใช้รูทในฐานะผู้ใช้ปกติจะไม่มีผลลัพธ์ปรากฏขึ้น
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำสั่งใดให้พิมพ์“ man which” (ไม่มีเครื่องหมายอัญประกาศ) ที่พรอมต์คำสั่งในหน้าต่าง Terminal แล้วกด Enter
การใช้คำสั่ง Whereis
คำสั่ง whereis ใช้เพื่อค้นหาว่าไฟล์ไบนารีซอร์สและแมนเพจสำหรับคำสั่งอยู่ที่ใด ตัวอย่างเช่นการพิมพ์whereis firefox
พร้อมท์จะแสดงผลลัพธ์ดังที่แสดงในภาพต่อไปนี้
หากคุณต้องการให้แสดงเฉพาะพา ธ ไปยังไฟล์ปฏิบัติการเท่านั้นไม่ใช่พา ธ ไปยังซอร์สและเพจ man (ual) ให้ใช้-b
อ็อพชัน ตัวอย่างเช่นคำสั่งwhereis -b firefox
จะแสดง/usr/bin/firefox
เป็นผลลัพธ์เท่านั้น สิ่งนี้มีประโยชน์เพราะคุณมักจะค้นหาไฟล์ปฏิบัติการของโปรแกรมบ่อยกว่าที่คุณจะค้นหาซอร์สและหน้าคนสำหรับโปรแกรมนั้น คุณยังสามารถค้นหาเฉพาะไฟล์ต้นฉบับ ( -s
) หรือเฉพาะ man pages ( -m
)
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง whereis พิมพ์man whereis
ในหน้าต่าง Terminal แล้วกด Enter
การทำความเข้าใจความแตกต่างระหว่างคำสั่ง Whereis และคำสั่งใด
คำสั่ง whereis จะแสดงตำแหน่งของไบนารีซอร์สและหน้าแมนสำหรับคำสั่งในขณะที่คำสั่งใดจะแสดงเฉพาะตำแหน่งของไบนารีสำหรับคำสั่ง
คำสั่ง whereis จะค้นหารายการของไดเร็กทอรีเฉพาะสำหรับไฟล์ไบนารีซอร์สและไฟล์ man ในขณะที่คำสั่งใดค้นหาไดเร็กทอรีที่อยู่ในตัวแปรสภาพแวดล้อม PATH ของผู้ใช้ปัจจุบัน สำหรับคำสั่ง whereis รายการของไดเร็กทอรีเฉพาะสามารถพบได้ในส่วน FILES ของ man page สำหรับคำสั่ง
เมื่อพูดถึงผลลัพธ์ที่แสดงตามค่าเริ่มต้นคำสั่ง whereis จะแสดงทุกสิ่งที่พบในขณะที่คำสั่งใดจะแสดงเฉพาะไฟล์ปฏิบัติการแรกที่พบ คุณสามารถเปลี่ยนได้โดยใช้-a
ตัวเลือกที่กล่าวถึงก่อนหน้านี้สำหรับคำสั่งใด
เนื่องจากคำสั่ง whereis ใช้เฉพาะพา ธ ที่เข้ารหัสในคำสั่งคุณจึงอาจไม่พบสิ่งที่ต้องการเสมอไป หากคุณกำลังค้นหาโปรแกรมที่คุณคิดว่าอาจติดตั้งไว้ในไดเร็กทอรีที่ไม่อยู่ในรายการ man page สำหรับคำสั่ง whereis คุณอาจต้องการใช้คำสั่งใดกับ-a
อ็อพชันเพื่อค้นหาการเกิดขึ้นทั้งหมดของคำสั่งทั่วทั้งระบบ