จะใช้คำสั่ง find ใน Linux เพื่อค้นหาไฟล์ได้อย่างไร?

How Use Find Command Linux Search Files



หากคุณเป็นผู้ใช้ Linux คุณไม่สามารถพึ่งพา GUI เพื่อทำงานต่างๆ ได้ ดังนั้นการเข้าใจคำสั่งเทอร์มินัลจึงเป็นสิ่งจำเป็นจริงๆ การแจกแจงทั้งหมดที่ใช้ Linux จะรันคำสั่งเพื่อดำเนินการดูแลระบบต่างๆ

แม้ว่าเทอร์มินัล Linux จะเป็นอินเทอร์เฟซแบบข้อความที่ดูซับซ้อน แต่จริงๆ แล้วเป็นเครื่องมือที่ยืดหยุ่น ใช้งานง่าย และค่อนข้างมีประโยชน์ สามารถคัดลอกคำสั่งจากแหล่งข้อมูลออนไลน์และวางลงในเทอร์มินัลเพื่อดำเนินการต่างๆ ได้อย่างง่ายดาย มีคำสั่งมากมาย แต่โพสต์นี้จะเน้นที่คำสั่ง find







คำสั่ง find ใช้ในการค้นหา กรอง หรือค้นหาไฟล์และโฟลเดอร์ในระบบของคุณตามเงื่อนไขที่ผู้ใช้กำหนดและดำเนินการหลายอย่างกับไฟล์เหล่านี้



มาพูดถึงวิธีการใช้คำสั่ง find ไวยากรณ์ และการดำเนินการต่างๆ ที่ดำเนินการโดยคำสั่งนี้โดยละเอียด



ไวยากรณ์ของ find Command ใน Linux

ไวยากรณ์คำสั่ง find แสดงอยู่ด้านล่าง:





หา [เส้นทาง] [ตัวเลือก] [การแสดงออก]

สามแอตทริบิวต์ไปกับคำสั่ง find:

  • [เส้นทาง]: กำหนดไดเร็กทอรีที่จะเริ่มค้นหา
  • [ตัวเลือก]: กำหนดเกณฑ์การกรองเช่น ค้นหาไฟล์/โฟลเดอร์ตามชื่อ การอนุญาต เวลา หรือวันที่
  • [expression]: กำหนดการกระทำที่จะดำเนินการกับไฟล์

แอตทริบิวต์ทั้งหมดข้างต้นเป็นทางเลือก เนื่องจากสามารถใช้ได้ตามความต้องการ



สำหรับการสาธิต ฉันได้สร้างไดเร็กทอรีและไฟล์ข้อความหลายไฟล์ ดูภาพด้านล่าง:

find/1%20copy.png

ค้นหาไฟล์ตามชื่อ

หากต้องการค้นหาไฟล์ตามชื่อ ให้ใช้คำสั่งด้านล่าง:

$หา.-ชื่อMyTextFile1.txt

find/2%20copy.png

จุดหลัง find ในคำสั่งด้านบนระบุไดเร็กทอรีปัจจุบัน

หากคุณจำชื่อไฟล์ที่แน่นอนไม่ได้ การค้นหาสามารถปรับปรุงเพิ่มเติมและทำให้ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่โดยใช้ -iname แทนชื่อ:

$หา.-ฉันชื่อmytextfile1.txt

find/3%20copy.png

ค้นหาไฟล์ตามประเภท

หากต้องการค้นหาไฟล์ตามประเภท ให้ใช้ตัวเลือก -type พร้อมตัวอักษรที่เรียกว่า descriptors เช่น f สำหรับไฟล์ d สำหรับไดเร็กทอรี l สำหรับลิงก์สัญลักษณ์ และ s สำหรับ sockets

หากต้องการค้นหาไดเรกทอรีทั้งหมดให้ใช้:

$หา.-พิมพ์NS

find/4%20copy.png

หากต้องการค้นหาไฟล์ ให้ใช้:

$หา.-พิมพ์NS

c%20copy.png

การค้นหาไฟล์ตามนามสกุลไฟล์

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

$หา.-ชื่อ *.txt

ค้นหา/5%20copy.png

ไฟล์ทั้งหมดที่มี .txt จะแสดงพร้อมกับไดเร็กทอรีที่เกี่ยวข้อง

การค้นหาและการลบไฟล์

หากต้องการค้นหาและลบไฟล์ ให้ใช้คำสั่งด้านล่าง:

$หา.-ฉันชื่อmytextfile1.txt-exec rm {};

find/6%20copy.png

คำสั่งข้างต้นค้นหาไฟล์ก่อนแล้วจึงลบออก รูปภาพแสดงให้เห็นว่า MyTextFile1 ถูกลบไปแล้ว

หากต้องการลบไฟล์ทั้งหมดที่มีนามสกุล .txt คุณสามารถใช้คำสั่งต่อท้าย:

$หา.-ชื่อ *.txt-ลบ

find/7%20copy.png

ค้นหาไฟล์ตามขนาด

คำสั่ง find ยังสามารถค้นหาไฟล์ตามขนาดได้อีกด้วย เพียงใช้ตัวเลือก -size พร้อมกับคำอธิบาย เช่น b สำหรับบล็อก 512 Kb, c สำหรับไบต์, k สำหรับกิโลไบต์, M และ G สำหรับเมกะไบต์และกิกะไบต์ตามลำดับ:

$หา.-พิมพ์NS-ขนาด -1024c

find/8%20copy.png

คำสั่งดังกล่าวจะค้นหาไฟล์ทั้งหมดที่มีขนาดน้อยกว่า 1024 ไบต์ สามารถปรับปรุงการค้นหาเพิ่มเติมได้ เช่น หากเราต้องการค้นหาไฟล์ทั้งหมดที่มีขนาดน้อยกว่า 1Mb เราจะใช้คำสั่งด้านล่าง:

$หา.-พิมพ์NS-ขนาด1M

ab/a%20copy.png

สำหรับไฟล์ทั้งหมดที่มากกว่า 1Mb ให้ใช้คำสั่งด้านล่าง:

$หา.-พิมพ์NS-ขนาด+1M

ab/b%20copy.png

นอกจากนี้ยังสามารถกำหนดช่วงของขนาดได้โดยใช้คำสั่งต่อท้าย:

$หา. -พิมพ์NS-ขนาด+1M-ขนาด10M

ค้นหาไฟล์โดยได้รับอนุญาต

ในการค้นหาไฟล์โดยใช้การอนุญาต เราจะใช้ตัวเลือก -perm แล้วตามด้วยรหัสการอนุญาต ดังที่แสดงด้านล่าง:

$หา.-perm 664

find/10%20copy.png

ค้นหาข้อความภายในไฟล์ข้อความ

หากต้องการค้นหาข้อความในไฟล์ข้อความหลายไฟล์ในระบบของคุณ ให้ใช้คำสั่งด้านล่าง:

$หา.-พิมพ์NS-ชื่อ *.txt-exec กริป'สวัสดี'{};

ค้นหา/12%20copy.png

คำสั่งค้นหาคำว่า Hello ในไฟล์ข้อความ ผลลัพธ์คือสตริงข้อความจากไฟล์ข้อความที่มี Hello

การค้นหาไฟล์ตามวันที่และเวลาแก้ไข

ในการเข้าถึงไฟล์โดยการแก้ไขครั้งล่าสุด ให้ใช้คำสั่งด้านล่าง:

$หา.-พิมพ์NS-ฉันชื่อ *.txt-mmin+10

find/13%20copy.png

คำสั่งด้านบนกำลังค้นหาไฟล์ที่แก้ไขล่าสุดเมื่อ 4 นาทีที่แล้ว และ m หมายถึงการแก้ไข

$หา. -พิมพ์NS-ฉันชื่อ *.txt-อามีน -10

find/14%20copy.png

คำสั่งด้านบนกำลังค้นหาไฟล์ที่เข้าถึงล่าสุดเมื่อ 4 นาทีที่แล้ว และ a in amin หมายถึงการเข้าถึง หากต้องการเข้าถึงไฟล์ที่ถูกแก้ไขเมื่อสี่วันก่อน ให้ใช้ -mtime +4 แทน mmin +4

บทสรุป

คำสั่ง find ใน Linux เป็นคำสั่งที่มีประโยชน์มากที่ช่วยให้คุณสามารถค้นหาไฟล์หรือไดเร็กทอรีโดยใช้เกณฑ์ที่แตกต่างกัน และยังช่วยให้คุณสามารถแก้ไขไฟล์จากเทอร์มินัลได้ ในคู่มือนี้ เราสังเกตไวยากรณ์ของคำสั่ง find ใน Linux และเรียนรู้วิธีใช้คำสั่ง find เพื่อทำหน้าที่ต่างๆ