การค้นหาไฟล์ในระบบ Linux อาจเป็นเรื่องยากหากคุณไม่ทราบวิธี วิธีที่ดีที่สุดในการค้นหาไฟล์คือการใช้คำสั่งเทอร์มินัลหลายคำสั่ง การใช้คำสั่งเหล่านี้อย่างเชี่ยวชาญจะทำให้คุณสามารถควบคุมไฟล์ของคุณได้อย่างสมบูรณ์ และมีประสิทธิภาพมากกว่าฟังก์ชันการค้นหาทั่วไปบนระบบปฏิบัติการอื่นๆ
ขั้นตอน
วิธีที่ 1 จาก 3: การใช้ "ระบุตำแหน่ง"
ขั้นตอนที่ 1. ติดตั้งไฟล์
ค้นหา ฟังก์ชั่น
โดยทั่วไป คำสั่ง find จะทำงานเร็วกว่าการค้นหามาก เนื่องจากคำสั่งนี้ทำงานนอกฐานข้อมูลของโครงสร้างไฟล์ของคุณ ลินุกซ์บางรุ่นไม่ได้ติดตั้งฟังก์ชันระบุตำแหน่ง ดังนั้นให้ป้อนคำสั่งต่อไปนี้เพื่อพยายามติดตั้ง:
- พิมพ์ sudo apt-get update แล้วกด ↵ Enter
- คุณติดตั้งได้ใน Debian และ Ubuntu ดังนี้: พิมพ์ sudo apt-get install mlocate แล้วกด ↵ Enter หากติดตั้งระบุตำแหน่งแล้ว คุณจะเห็นข้อความ mlocate เป็นเวอร์ชันใหม่ล่าสุดอยู่แล้ว
- ใน Arch Linux ให้ใช้ตัวจัดการแพ็คเกจ pacman: pacman -S mlocate
- สำหรับ Gentoo ให้ใช้excel:emamlocate
ขั้นตอนที่ 2. อัปเดต
ค้นหา ฐานข้อมูล
คำสั่ง find จะไม่สามารถค้นหาสิ่งใดได้จนกว่าจะสร้างและปรับปรุงฐานข้อมูล สิ่งนี้เกิดขึ้นโดยอัตโนมัติทุกวัน แต่คุณสามารถอัปเดตด้วยตนเองได้เช่นกัน คุณจะต้องดำเนินการนี้หากต้องการเริ่มใช้การค้นหาทันที
พิมพ์ sudo updatedb แล้วกด ↵ Enter
ขั้นตอนที่ 3 ใช้
ค้นหา เพื่อทำการค้นหาอย่างง่าย
คำสั่ง find นั้นรวดเร็ว แต่ไม่มีตัวเลือกมากเท่ากับคำสั่ง find คุณสามารถค้นหาไฟล์พื้นฐานได้ในลักษณะเดียวกับคำสั่ง find
ค้นหา -i "*.jpg"
- คำสั่งนี้จะค้นหาไฟล์ที่มีนามสกุล-j.webp" />
- เช่นเดียวกับคำสั่ง find -i จะละเว้นกรณีของการสืบค้นของคุณ
ขั้นตอนที่ 4 จำกัดผลการค้นหาของคุณ
หากการค้นหาของคุณให้ผลลัพธ์มากเกินไปที่จะจัดการ คุณสามารถตัดออกได้โดยใช้ตัวเลือก -n ตามด้วยจำนวนผลลัพธ์ที่คุณต้องการให้แสดง
ค้นหา -n 20 -i "*.jpg"
- จะแสดงเฉพาะผลลัพธ์ 20 รายการแรกที่ตรงกับคำค้นหาเท่านั้น
- คุณยังสามารถใช้ | ไปป์เพื่อส่งผลให้น้อยลงเพื่อการเลื่อนที่ง่าย
วิธีที่ 2 จาก 3: การใช้ "find"
ขั้นตอนที่ 1. ค้นหาไฟล์ตามชื่อไฟล์
นี่คือการค้นหาพื้นฐานที่สุดที่คุณสามารถทำได้โดยใช้คำสั่ง find คำสั่งด้านล่างจะค้นหาคำค้นหาในไดเร็กทอรีปัจจุบันและไดเร็กทอรีย่อยใดๆ
ค้นหา -iname "ชื่อไฟล์"
การใช้ -iname แทน -name จะละเว้นกรณีของการสืบค้นของคุณ คำสั่ง -name คำนึงถึงขนาดตัวพิมพ์
ขั้นตอนที่ 2 ตั้งค่าการค้นหาเพื่อเริ่มต้นในไดเรกทอรีราก
หากคุณต้องการค้นหาทั้งระบบ คุณสามารถเพิ่ม / ตัวแก้ไข ลงในแบบสอบถามได้ สิ่งนี้จะบอก find ให้ค้นหาไดเร็กทอรีทั้งหมดที่เริ่มต้นจากไดเร็กทอรีรูท
ค้นหา / -iname "ชื่อไฟล์"
- คุณสามารถเริ่มการค้นหาในไดเร็กทอรีเฉพาะโดยแทนที่ / ด้วยพาธไดเร็กทอรี เช่น /home/pat
- คุณสามารถใช้. แทน / เพื่อบังคับการค้นหาให้ดำเนินการในไดเร็กทอรีปัจจุบันและไดเร็กทอรีย่อยเท่านั้น
ขั้นตอนที่ 3 ใช้อักขระตัวแทน
* เพื่อค้นหาสิ่งที่ตรงกับส่วนของข้อความค้นหา
อักขระตัวแทน * อาจมีประโยชน์ในการค้นหาบางอย่างหากคุณไม่ทราบชื่อเต็ม หรือหากคุณต้องการค้นหาทุกอย่างที่มีส่วนขยายเฉพาะ
ค้นหา /home/pat -iname "*.conf"
- การดำเนินการนี้จะส่งคืนไฟล์.conf ทั้งหมดในโฟลเดอร์ผู้ใช้ของ Pat (และไดเรกทอรีย่อย)
- คุณยังสามารถใช้เพื่อค้นหาทุกสิ่งที่ตรงกับส่วนหนึ่งของชื่อไฟล์ ตัวอย่างเช่น หากคุณมีเอกสารที่เกี่ยวข้องกับ wikiHow จำนวนมาก คุณสามารถค้นหาเอกสารทั้งหมดได้โดยพิมพ์ "*wiki*"
ขั้นตอนที่ 4 ทำให้ผลการค้นหาของคุณจัดการได้ง่ายขึ้น
หากคุณได้รับผลการค้นหาจำนวนมาก อาจเป็นเรื่องยากที่จะกรองผ่านผลการค้นหาเหล่านี้ ใช้ | และส่งผลการค้นหาไปยังโปรแกรมกรอง "น้อย" ซึ่งจะทำให้คุณสามารถเลื่อนดูและกรองผลลัพธ์ได้ง่ายขึ้นมาก
find /home/pat -iname "*.conf" | น้อย
ขั้นตอนที่ 5. ค้นหาประเภทผลลัพธ์ที่เฉพาะเจาะจง
คุณสามารถใช้ตัวแก้ไขเพื่อส่งคืนผลลัพธ์บางประเภทเท่านั้น คุณสามารถค้นหาไฟล์ปกติ (f) ไดเร็กทอรี (d) ลิงก์สัญลักษณ์ (l) อุปกรณ์อักขระ (c) และอุปกรณ์บล็อก (b) โดยใช้ตัวปรับแต่งที่ถูกต้อง
ค้นหา / -type f -iname "ชื่อไฟล์"
ขั้นตอนที่ 6 กรองผลการค้นหาของคุณตามขนาด
หากคุณมีไฟล์จำนวนมากที่มีชื่อคล้ายกัน แต่ทราบขนาดที่คุณต้องการ คุณสามารถกรองผลลัพธ์ของเราตามขนาดได้
ค้นหา / -ขนาด +50M -iname "ชื่อไฟล์"
- ซึ่งจะแสดงผลลัพธ์ที่มีขนาด 50 เมกะไบต์หรือใหญ่กว่า คุณสามารถใช้ + หรือ - เพื่อค้นหาขนาดที่มากขึ้นหรือน้อยลง การละเว้น + หรือ - จะค้นหาไฟล์ที่มีขนาดตรงตามที่ระบุ
- คุณสามารถกรองตามไบต์ (c), กิโลไบต์ (k), เมกะไบต์ (M), กิกะไบต์ (G) หรือบล็อก 512 ไบต์ (b) โปรดทราบว่าแฟล็กขนาดจะคำนึงถึงขนาดตัวพิมพ์
ขั้นตอนที่ 7 ใช้ตัวดำเนินการบูลีนเพื่อรวมตัวกรองการค้นหา
คุณสามารถใช้ตัวดำเนินการ -and, -or และ -not เพื่อรวมการค้นหาประเภทต่างๆ เข้าด้วยกัน
ค้นหา /travelphotos -type f -size +200k -not -iname "*2015*"
คำสั่งจะค้นหาไฟล์ในไดเร็กทอรี "travelphotos" ที่มีขนาดมากกว่า 200 กิโลไบต์ แต่ไม่มี "2015" ในชื่อไฟล์
ขั้นตอนที่ 8 ค้นหาไฟล์ตามเจ้าของหรือสิทธิ์
หากคุณกำลังพยายามค้นหาไฟล์ที่ผู้ใช้เป็นเจ้าของ หรือไฟล์ที่มีสิทธิ์บางอย่าง คุณสามารถจำกัดการค้นหาให้แคบลงได้
find / -user pat -iname "filename" ค้นหา / -group users -iname "filename" find / -perm 777 -iname "filename"
ตัวอย่างข้างต้นจะค้นหาผู้ใช้ กลุ่ม หรือสิทธิ์ที่ระบุสำหรับข้อความค้นหา คุณยังสามารถละเว้นการสืบค้นชื่อไฟล์เพื่อส่งคืนไฟล์ทั้งหมดที่ตรงกับประเภทนั้น ตัวอย่างเช่น find / -perm 777 จะส่งคืนไฟล์ทั้งหมดด้วยสิทธิ์ 777 (ไม่มีข้อจำกัด)
ขั้นตอนที่ 9 รวมคำสั่งเพื่อดำเนินการเมื่อพบไฟล์
คุณสามารถรวมคำสั่ง find กับคำสั่งอื่นๆ เพื่อให้คุณสามารถดำเนินการกับไฟล์ที่ส่งคืนโดยคิวรี แยกคำสั่ง find และคำสั่งที่สองด้วยแฟล็ก -exec แล้วจบบรรทัดด้วย {};
หา. -type f -perm 777 -exec chmod 755 {};
สิ่งนี้จะค้นหาไดเรกทอรีปัจจุบัน (และไดเรกทอรีย่อยทั้งหมด) สำหรับไฟล์ที่มีสิทธิ์ 777 จากนั้นจะใช้คำสั่ง chmod เพื่อเปลี่ยนการอนุญาตเป็น 755
วิธีที่ 3 จาก 3: ค้นหาข้อความในไฟล์
ขั้นตอนที่ 1. ใช้
grep คำสั่งค้นหาสตริงข้อความภายในไฟล์
หากคุณกำลังมองหาไฟล์ที่มีวลีหรือสตริงอักขระบางตัว คุณสามารถใช้คำสั่ง grep คำสั่ง grep พื้นฐานถูกจัดรูปแบบดังนี้:
grep -r -i "คำค้นหา" /path/to/directory/
- -r ตั้งค่าการค้นหาเป็น "แบบเรียกซ้ำ" ดังนั้นจะค้นหาไดเรกทอรีปัจจุบันและไดเรกทอรีย่อยทั้งหมดสำหรับไฟล์ใดๆ ที่มีสตริงการสืบค้น
- -i บ่งชี้ว่าเคียวรีไม่คำนึงถึงขนาดตัวพิมพ์ หากคุณต้องการบังคับให้การค้นหาสนใจตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ให้ข้ามตัวดำเนินการ -i
ขั้นตอนที่ 2 ตัดข้อความพิเศษออก
เมื่อคุณทำการค้นหา grep ตามด้านบน คุณจะเห็นชื่อไฟล์พร้อมกับข้อความที่มีการเน้นข้อความค้นหาที่ตรงกัน คุณสามารถซ่อนข้อความที่ตรงกันและเพียงแค่แสดงชื่อไฟล์และเส้นทางโดยรวมถึงสิ่งต่อไปนี้:
grep -r -i "คำค้นหา" /path/to/directory/ | ตัด -d: -f1
ขั้นตอนที่ 3 ซ่อนข้อความแสดงข้อผิดพลาด
คำสั่ง grep จะส่งคืนข้อผิดพลาดเมื่อพยายามเข้าถึงโฟลเดอร์โดยไม่มีการอนุญาตที่ถูกต้องหรือทำงานในโฟลเดอร์ว่าง คุณสามารถส่งข้อความแสดงข้อผิดพลาดไปที่ /dev/null ซึ่งจะซ่อนจากเอาต์พุต
grep -r -i "คำค้นหา" /path/to/directory/ 2>/dev/null