10 ตัวอย่าง การใช้ find command ใน UNIX และ Linux

16-พ.ย.-18

คัมภีร์เทพ IT

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

1. วิธีเรียกใช้ find command ที่ใช้งานล่าสุดใน UNIX

ใช้ !find เพื่อเรียกคำสั่ง find ที่ใช้งานล่าสุด มันจะช่วยให้คุณประหยัดเวลาได้มาก หากคุณกำลังค้นหาบางสิ่งบางอย่าง และคุณจำเป็นต้อง execute โดยใช้คำสั่งเดียวกันซ้ำๆ 
โดยทั่วไปเมื่อใส่เครื่องหมาย "!" หน้าคำสั่งใด จะเป็นการเรียกใช้คำสั่งก่อนหน้า ซึ่งถือเป็นหนึ่งใน special shell characters หากคุณไม่คุ้นเคยกับ Bash Built-in Commands และ special characters สามารถหาข้อมูลจาก Internet หรือเรียนจากคอร์สออนไลน์ได้ หรือไม่ก็ลองดู Bash Tricks ของ Julia Evans ก็มีประโยชน์และช่วยคุณให้ทำงานได้เร็วขึ้นอีกด้วย

2. วิธีค้นหา File ที่ได้รับการ Modify น้อยกว่า 1 วัน, 1 ชั่วโมง หรือ 1 นาที ใน Linux

คำสั่ง –mtime ถูกใช้เพื่อค้นหา file ตามเวลาที่ modify คำสั่งนี้มีประโยชน์อย่างยิ่ง หากมองในปัญหา Production บางอย่างเพื่อตรวจสอบว่า file ใดที่ถูก modify ไปเมื่อไม่นานมานี้ อาจเป็นสาเหตุของปัญหานี้ มันจะช่วยคุณได้เป็นอย่างมากและในหลายครั้ง มันอาจช่วย hint เกี่ยวกับปัญหาต่างๆ ที่เกิดจากการเปลี่ยนแปลง file ไม่ว่าจะตั้งใจหรือไม่ตั้งใจก็ตาม
นอกจาก –mtime แล้ว ยังมีอีก 2 options ที่สามารถใช้เกี่ยวกับเรื่องเวลาได้ คือ atime ที่จะแสดงเวลาที่ access file ครั้งล่าสุด และ –ctime ที่จะแสดงเวลาที่ถูกเปลี่ยนแปลงครั้งล่าสุด 
เราสามารถใช้เครื่องหมาย + ใช้เพื่อค้นหามากกว่าเวลาที่กำหนด ส่วนเครื่องหมาย – ใช้เพื่อค้นหาน้อยกว่าเวลาที่กำหนด และหากไม่ใส่เครื่องหมายใดเลยจะใช้เพื่อการค้นหาแบบตรงตัว ลองดูจากตัวอย่างด้านล่าง
จากตัวอย่าง จะเห็นว่ามี file ชื่อ StockTrading.java ที่มีการ modify น้อยกว่า 1 วันซึ่งแสดงในส่วนของ –mtime -1 ส่วนที่เหลือมีการ modify มาแล้วเกิน 1 วัน และไม่มี file ใดที่ถูก modify 1 วันพอดี

3. วิธีค้นหา File และ Directory ด้วยการระบุ Permission ใน UNIX

เราใช้ perm ถูกใช้เพื่อค้นหา file ตาม permission อย่างกรณีคุณใช้ perm 444 เพื่อหา File ทั้งหมดที่มี read permission สำหรับ Owner, Group และ Other 
ถ้าคุณไม่แน่ใจว่าตัวเลข 777 และ 444 หมายถึงอะไรบ้าง คุณสามารถดูบทความเก่าๆ ได้ที่ file and directory permission in Unix และบทความ chmod examples เพื่อใช้เปลี่ยนแปลง permission ใน UNIX
คุณสามารถประยุกต์ใช้คำสั่งเหล่านี้กับ file ประเภทอื่นๆ ได้ตามต้องการ เช่น พวก  read-only หรือ write-only files โดยการเปลี่ยน Permission เช่น หากคุณต้องการหา read-only files ใน directory ปัจจุบัน สามารถใช้คำสั่ง find . –perm 555 ได้
การใช้ "." หมายถึง เริ่มค้นหาใน directory ปัจจุบัน

4. การค้นหาแบบ Case Sensitive โดยใช้ find command ใน UNIX

จะทำอย่างไร หากเราต้องการค้นหาแบบ case insensitive (ไม่สนใจอักษรพิมพ์ใหญ่-เล็ก) โดยใช้คำสั่ง find ใน UNIX? คุณสามารถใช้ -iname ได้ โดยทั่วไปค่า default ของการค้นหาโดยใช้ find เป็นแบบ case sensitive
โดย option นี้ของคำสั่ง find จะมีประโยชน์กับคุณอย่างยิ่ง กรณีที่คุณกำลังหา errors และ exceptions ใน Log file
ขณะเดียวกัน เราสามารถใช้ find command ร่วมกับ xargs command ได้ ซึ่งสามารถนำไปใช้ประโยชน์ในการ delete file, ใช้แสดง ontent ของ file หรือสามารถใช้ comment ใน file ได้

5. วิธี Delete Temporary Files โดยใช้ find command ใน UNIX

ในการ Delete File คุณสามารถใช้ –delete ซึ่งเป็น Option ของ Find Command หรือจะใช้งานร่วมกับ xargs ก็ได้ 
การใช้ xargs ร่วมกับ Find command จะช่วยเพิ่มประสิทธิภาพในการทำสิ่งที่คุณต้องการจากแต่ละ Search Result ที่ได้มา

6. วิธีค้นหา Text File ทั้งหมดโดยใช้ Word Exception

find . –name "*.java" –print | xargs grep “MemoryCache” จะใช้ในการค้นหาไฟล์ Java ทั้งหมดจาก Directory ปัจจุบันที่ขึ้นต้นด้วยคำว่า “MemoryCache” นอกจากนี้เรายังสามารถใช้ -print ได้แทบในทุกกรณีเนื่องจากมันเป็นค่า Default สำหรับ UNIX อยู่แล้ว ที่สำคัญคุณสามารถเรียงลำดับของ Result ที่ได้จาก Find command โดยใช้ Sort command ใน UNIX ได้

7. ค้นหา Files ใน Directory ปัจจุบันโดยไม่ค้นหาใน Subdirectory

ในขณะที่ใช้ find command บางครั้งเราอยากค้นหา file และ directory ที่ใหม่ เฉพาะใน directory ปัจจุบัน ดังนั้น เราสามารถใช้ find command ในรูปแบบอื่นได้ 
คุณสามารถใช้ -type เพื่อระบุการค้นหาเฉพาะ file, link หรือ directory และ -maxdepth เพื่อระบุระดับความลึกของการค้นหา
หรือ สามารถเขียนได้อีกรูปแบบหนึ่ง ตามด้านล่างนี้
คำสั่งนี้หมายถึง ค้นหา file ที่มีการแก้ไขล่าสุดเมื่อ 15 นาทีที่ผ่านมา และดูใน directory ปัจจุบันเท่านั้น (ไม่สนใจ sub-directory) 

8. วิธีค้นหา File ตาม Size ใน Unix และ Linux

ในตัวอย่างต่อไปนี้ จะแสดงวิธีที่คุณสามารถใช้ find -size เพื่อค้นหา File ตามขนาดที่กำหนด โดยมันจะค้นหา file ทั้งหมดใน directory และ sub-directory ปัจจุบัน ที่มีขนาด file ที่ระบุไว้
เราใช้ c วางไว้หลังจำนวนตัวเลขเสมอ และระบุขนาดเป็น byte มิฉะนั้นคุณอาจจะสับสนได้ 
นอกจากนี้ ในการค้นหา file โดยใช้ช่วงของขนาด file, สามารถระบุเครื่องหมาย + หรือ – ไว้ก่อนตัวเลข ถ้าใส่เครื่องหมาย - หมายถึง "น้อยกว่า" และเครื่องหมาย + หมายถึง "มากกว่า" ลองดูจากตัวอย่างจากด้านล่าง:
ตัวอย่างนี้ จะทำการค้นหา file ที่มีขนาดมากกว่า 10,000 แต่น้อยกว่า 50,000 byte 

9. วิธีค้นหา File ที่เก่ากว่าและมี Size ตามที่กำหนด

เราสามารถใช้ –mtime และ –size option ในการหา file เก่ากว่าและมี size มากกว่าที่กำหนด ซึ่งสามารถใช้ได้ในสถานการณ์ที่คุณต้องการลบ file เก่าที่มีขนาดใหญ่ออกไปบางส่วน เพื่อเพิ่มพื้นที่ว่างในเครื่องของคุณ 
นี่คือ ตัวอย่าง find command ที่ต้องการค้นหา file ที่มีอายุมากกว่า 10 วันและมีขนาดมากกว่า 50K

10. Find และ AWK

คุณสามารถใช้ "awk" ร่วมกับ find command เพื่อแสดงตัว formatted output เช่นในตัวอย่างด้านล่างจะเป็นการค้นหา Symbolic Links ใน home directory ของคุณ และทำการแสดง file ที่ symbolic links นั้น point ไปหา:
การใช้ "." หมายถึง เริ่มค้นหาจาก directory ปัจจุบัน รวมไปถึง sub-directory ด้วย และ "-type l" ให้แสดง link ทั้งหมด
หวังว่าข้อมูลนี้จะเป็นประโยชน์กับคุณในเรื่องการใช้ find Command และน่าจะช่วยให้คุณทำงานอย่างมีประสิทธิภาพมากขึ้นในการใช้งาน UNIX และ Linux
 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความที่เกี่ยวข้อง