แม้ว่าเทอร์มินัล Linux จะเป็นอินเทอร์เฟซแบบข้อความที่ดูซับซ้อน แต่จริงๆ แล้วเป็นเครื่องมือที่ยืดหยุ่น ใช้งานง่าย และค่อนข้างมีประโยชน์ สามารถคัดลอกคำสั่งจากแหล่งข้อมูลออนไลน์และวางลงในเทอร์มินัลเพื่อดำเนินการต่างๆ ได้อย่างง่ายดาย มีคำสั่งมากมาย แต่โพสต์นี้จะเน้นที่คำสั่ง find
คำสั่ง find ใช้ในการค้นหา กรอง หรือค้นหาไฟล์และโฟลเดอร์ในระบบของคุณตามเงื่อนไขที่ผู้ใช้กำหนดและดำเนินการหลายอย่างกับไฟล์เหล่านี้
มาพูดถึงวิธีการใช้คำสั่ง find ไวยากรณ์ และการดำเนินการต่างๆ ที่ดำเนินการโดยคำสั่งนี้โดยละเอียด
ไวยากรณ์ของ find Command ใน Linux
ไวยากรณ์คำสั่ง find แสดงอยู่ด้านล่าง:
หา [เส้นทาง] [ตัวเลือก] [การแสดงออก]
สามแอตทริบิวต์ไปกับคำสั่ง find:
- [เส้นทาง]: กำหนดไดเร็กทอรีที่จะเริ่มค้นหา
- [ตัวเลือก]: กำหนดเกณฑ์การกรองเช่น ค้นหาไฟล์/โฟลเดอร์ตามชื่อ การอนุญาต เวลา หรือวันที่
- [expression]: กำหนดการกระทำที่จะดำเนินการกับไฟล์
แอตทริบิวต์ทั้งหมดข้างต้นเป็นทางเลือก เนื่องจากสามารถใช้ได้ตามความต้องการ
สำหรับการสาธิต ฉันได้สร้างไดเร็กทอรีและไฟล์ข้อความหลายไฟล์ ดูภาพด้านล่าง:
ค้นหาไฟล์ตามชื่อ
หากต้องการค้นหาไฟล์ตามชื่อ ให้ใช้คำสั่งด้านล่าง:
$หา.-ชื่อMyTextFile1.txt
จุดหลัง find ในคำสั่งด้านบนระบุไดเร็กทอรีปัจจุบัน
หากคุณจำชื่อไฟล์ที่แน่นอนไม่ได้ การค้นหาสามารถปรับปรุงเพิ่มเติมและทำให้ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่โดยใช้ -iname แทนชื่อ:
$หา.-ฉันชื่อmytextfile1.txt
ค้นหาไฟล์ตามประเภท
หากต้องการค้นหาไฟล์ตามประเภท ให้ใช้ตัวเลือก -type พร้อมตัวอักษรที่เรียกว่า descriptors เช่น f สำหรับไฟล์ d สำหรับไดเร็กทอรี l สำหรับลิงก์สัญลักษณ์ และ s สำหรับ sockets
หากต้องการค้นหาไดเรกทอรีทั้งหมดให้ใช้:
$หา.-พิมพ์NS
หากต้องการค้นหาไฟล์ ให้ใช้:
$หา.-พิมพ์NS
การค้นหาไฟล์ตามนามสกุลไฟล์
ในการค้นหาไฟล์ตามรูปแบบ เช่น นามสกุลไฟล์ เช่น การแสดงไฟล์ทั้งหมดด้วย .txt ให้ใช้คำสั่งต่อไปนี้:
$หา.-ชื่อ *.txt
ไฟล์ทั้งหมดที่มี .txt จะแสดงพร้อมกับไดเร็กทอรีที่เกี่ยวข้อง
การค้นหาและการลบไฟล์
หากต้องการค้นหาและลบไฟล์ ให้ใช้คำสั่งด้านล่าง:
$หา.-ฉันชื่อmytextfile1.txt-exec rm {};
คำสั่งข้างต้นค้นหาไฟล์ก่อนแล้วจึงลบออก รูปภาพแสดงให้เห็นว่า MyTextFile1 ถูกลบไปแล้ว
หากต้องการลบไฟล์ทั้งหมดที่มีนามสกุล .txt คุณสามารถใช้คำสั่งต่อท้าย:
$หา.-ชื่อ *.txt-ลบ
ค้นหาไฟล์ตามขนาด
คำสั่ง find ยังสามารถค้นหาไฟล์ตามขนาดได้อีกด้วย เพียงใช้ตัวเลือก -size พร้อมกับคำอธิบาย เช่น b สำหรับบล็อก 512 Kb, c สำหรับไบต์, k สำหรับกิโลไบต์, M และ G สำหรับเมกะไบต์และกิกะไบต์ตามลำดับ:
$หา.-พิมพ์NS-ขนาด -1024c
คำสั่งดังกล่าวจะค้นหาไฟล์ทั้งหมดที่มีขนาดน้อยกว่า 1024 ไบต์ สามารถปรับปรุงการค้นหาเพิ่มเติมได้ เช่น หากเราต้องการค้นหาไฟล์ทั้งหมดที่มีขนาดน้อยกว่า 1Mb เราจะใช้คำสั่งด้านล่าง:
$หา.-พิมพ์NS-ขนาด1M
สำหรับไฟล์ทั้งหมดที่มากกว่า 1Mb ให้ใช้คำสั่งด้านล่าง:
$หา.-พิมพ์NS-ขนาด+1M
นอกจากนี้ยังสามารถกำหนดช่วงของขนาดได้โดยใช้คำสั่งต่อท้าย:
$หา. -พิมพ์NS-ขนาด+1M-ขนาด10Mค้นหาไฟล์โดยได้รับอนุญาต
ในการค้นหาไฟล์โดยใช้การอนุญาต เราจะใช้ตัวเลือก -perm แล้วตามด้วยรหัสการอนุญาต ดังที่แสดงด้านล่าง:
$หา.-perm 664
ค้นหาข้อความภายในไฟล์ข้อความ
หากต้องการค้นหาข้อความในไฟล์ข้อความหลายไฟล์ในระบบของคุณ ให้ใช้คำสั่งด้านล่าง:
$หา.-พิมพ์NS-ชื่อ *.txt-exec กริป'สวัสดี'{};
คำสั่งค้นหาคำว่า Hello ในไฟล์ข้อความ ผลลัพธ์คือสตริงข้อความจากไฟล์ข้อความที่มี Hello
การค้นหาไฟล์ตามวันที่และเวลาแก้ไข
ในการเข้าถึงไฟล์โดยการแก้ไขครั้งล่าสุด ให้ใช้คำสั่งด้านล่าง:
$หา.-พิมพ์NS-ฉันชื่อ *.txt-mmin+10
คำสั่งด้านบนกำลังค้นหาไฟล์ที่แก้ไขล่าสุดเมื่อ 4 นาทีที่แล้ว และ m หมายถึงการแก้ไข
$หา. -พิมพ์NS-ฉันชื่อ *.txt-อามีน -10
คำสั่งด้านบนกำลังค้นหาไฟล์ที่เข้าถึงล่าสุดเมื่อ 4 นาทีที่แล้ว และ a in amin หมายถึงการเข้าถึง หากต้องการเข้าถึงไฟล์ที่ถูกแก้ไขเมื่อสี่วันก่อน ให้ใช้ -mtime +4 แทน mmin +4
บทสรุป
คำสั่ง find ใน Linux เป็นคำสั่งที่มีประโยชน์มากที่ช่วยให้คุณสามารถค้นหาไฟล์หรือไดเร็กทอรีโดยใช้เกณฑ์ที่แตกต่างกัน และยังช่วยให้คุณสามารถแก้ไขไฟล์จากเทอร์มินัลได้ ในคู่มือนี้ เราสังเกตไวยากรณ์ของคำสั่ง find ใน Linux และเรียนรู้วิธีใช้คำสั่ง find เพื่อทำหน้าที่ต่างๆ