ลินุกซ์ find
คำสั่งเป็นหนึ่งในคำสั่งที่สำคัญและสะดวกที่สุดในระบบลีนุกซ์ มันสามารถค้นหาไฟล์บน Linux PC ของคุณได้ตามชื่อโดยอิงตามเงื่อนไขและตัวแปรใดก็ตามที่คุณตั้งไว้ คุณสามารถค้นหาไฟล์ตามสิทธิ์ ผู้ใช้ กลุ่ม ประเภทไฟล์ วันที่ ขนาด และเกณฑ์ที่เป็นไปได้อื่นๆ โดยใช้ find
สั่งการ. ที่นี่เราจะแสดงวิธีค้นหาไฟล์ใน Linux โดยใช้ find
คำสั่ง
find
คำสั่งมีอยู่ใน Linux distro ส่วนใหญ่โดยค่าเริ่มต้น ดังนั้นคุณไม่จำเป็นต้องติดตั้งแพ็คเกจสำหรับคำสั่งนี้
ค้นหาไฟล์ตามชื่อในไดเรกทอรีปัจจุบัน
วิธีที่ชัดเจนที่สุดในการค้นหาไฟล์คือตามชื่อ หากต้องการค้นหาไฟล์ตามชื่อในไดเร็กทอรีปัจจุบัน ให้เรียกใช้:
find . -name photo.png
หากคุณต้องการค้นหาไฟล์ตามชื่อที่มีทั้งตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ให้เรียกใช้:
find . -iname photo.png
หากคุณต้องการค้นหาไฟล์ในไดเรกทอรีราก ให้นำหน้าการค้นหาด้วย sudo
ซึ่งจะทำให้คุณได้รับสิทธิ์ทั้งหมดที่จำเป็นในการทำเช่นนั้น และรวมถึง /
สัญลักษณ์ซึ่งบอกให้ Linux ค้นหาในไดเร็กทอรีราก สุดท้าย -print
นิพจน์แสดงไดเรกทอรีของผลการค้นหาของคุณ หากคุณกำลังมองหา Gzip ให้พิมพ์:
sudo find / -name gzip -print
ค้นหาไฟล์ภายใต้ไดเรกทอรีที่ระบุ
หากคุณต้องการค้นหาไฟล์ภายใต้ไดเร็กทอรีเฉพาะ เช่น “/home” ให้รัน:
find /home -name filename.txt
หากคุณต้องการค้นหาไฟล์ที่มีนามสกุล “.txt” ใต้ไดเร็กทอรี “/home” ให้เรียกใช้:
find /home -name "*.txt"
หากต้องการค้นหาไฟล์ที่มีชื่อ "test.txt" ภายใต้หลายไดเร็กทอรี เช่น "/home" และ "/opt" ให้เรียกใช้:
find /home /opt -name test.txt
หากต้องการค้นหาไฟล์ที่ซ่อนอยู่ในไดเร็กทอรี “/home” ให้เรียกใช้:
find /home -name ".*"
หากต้องการค้นหาไฟล์เดียวชื่อ “test.txt” และนำออก ให้เรียกใช้:
find /home -type f -name test.txt -exec rm -f {}
หากต้องการค้นหาไฟล์ว่างทั้งหมดภายใต้ไดเร็กทอรี “/opt” ให้เรียกใช้:
find /opt -type f -empty
ค้นหาไดเรกทอรีโดยใช้ชื่อ
หากคุณต้องการค้นหาไดเร็กทอรีทั้งหมดที่มีชื่อ "testdir" ภายใต้ไดเร็กทอรี "/home" ให้รัน:
find /home -type d -name testdir
ในการส่งไดเร็กทอรีว่างทั้งหมดภายใต้ “/home” ให้รัน:
find /home -type d -empty
ค้นหาไฟล์ที่มีสิทธิ์บางอย่าง
find
คำสั่งสามารถใช้เพื่อค้นหาไฟล์ที่ได้รับอนุญาตเฉพาะโดยใช้ perm
ตัวเลือก
หากต้องการค้นหาไฟล์ทั้งหมดที่มีสิทธิ์ "777" ในไดเร็กทอรี "/home" ให้เรียกใช้:
find /home -type f -perm 0777 -print
หากต้องการค้นหาไฟล์ทั้งหมดโดยไม่ได้รับอนุญาต “777” ให้เรียกใช้:
find . -type f ! -perm 777
หากต้องการค้นหาไฟล์แบบอ่านอย่างเดียวทั้งหมด ให้เรียกใช้:
find /home -perm /u=r
หากต้องการค้นหาไฟล์ปฏิบัติการทั้งหมด ให้เรียกใช้:
find /home -perm /a=x
หากต้องการค้นหาไฟล์ชุด Sticky Bit ทั้งหมดที่มีสิทธิ์ "553" ให้เรียกใช้:
find /home -perm 1553
หากต้องการค้นหาไฟล์ชุด SUID ทั้งหมด ให้เรียกใช้:
find /home -perm /u=s
หากต้องการค้นหาไฟล์ทั้งหมดที่มีสิทธิ์ "777" และเปลี่ยนการอนุญาตเป็น "700" ให้เรียกใช้:
find /home -type f -perm 0777 -print -exec chmod 700 {} ;
ค้นหาไฟล์และไดเรกทอรีตามวันที่และเวลา
หากต้องการค้นหาไฟล์ทั้งหมดภายใต้ “/opt” ซึ่งแก้ไขเมื่อ 20 วันก่อนหน้า ให้เรียกใช้:
find /opt -mtime 20
หากต้องการค้นหาไฟล์ทั้งหมดภายใต้ “/opt” ซึ่งเข้าถึงก่อนหน้า 20 วัน ให้เรียกใช้:
find /opt -atime 20
หากต้องการค้นหาไฟล์ทั้งหมดภายใต้ “/opt” ซึ่งถูกแก้ไขมากกว่า 30 วันก่อนหน้านี้และน้อยกว่า 50 วันหลังจาก:
find /opt -mtime +30 -mtime -50
หากต้องการค้นหาไฟล์ทั้งหมดภายใต้ “/opt” ซึ่งมีการเปลี่ยนแปลงในช่วงสองชั่วโมงที่ผ่านมา ให้เรียกใช้:
find /opt -cmin -120
ค้นหาไฟล์และไดเรกทอรีตามขนาด
หากต้องการค้นหาไฟล์ 10MB ทั้งหมดภายใต้ไดเร็กทอรี “/home” ให้เรียกใช้:
find /home -size 10M
หากต้องการค้นหาไฟล์ทั้งหมดภายใต้ไดเร็กทอรี “/home” ซึ่งมากกว่า 10MB และน้อยกว่า 50MB ให้เรียกใช้:
find /home -size +10M -size -50M
หากต้องการค้นหาไฟล์ “.mp4” ทั้งหมดภายใต้ไดเร็กทอรี “/home” ที่มีมากกว่า 10MB และลบออกโดยใช้คำสั่งเดียว ให้เรียกใช้:
find /home -type f -name *.mp4 -size +10M -exec rm {} ;
อย่างที่คุณเห็น find
คำสั่งมีประโยชน์อย่างเหลือเชื่อสำหรับการบริหารระบบ การดูผ่านไดเร็กทอรีเพื่อค้นหาไฟล์ และโดยทั่วไป การตัดต้นไม้ไดเร็กทอรีเสมือนใน Linux หากคุณชอบบทความนี้เกี่ยวกับ Linux อย่าลืมตรวจสอบเนื้อหา Linux อื่นๆ ของเรา เช่น วิธีใช้คำสั่ง scp เพื่อถ่ายโอนไฟล์อย่างปลอดภัย วิธีใช้ nnn เป็นตัวจัดการไฟล์ในเทอร์มินัล และวิธีแก้ไขแพ็คเกจที่เสียหาย