$ find /home/tophy -name 'index*' $ find /home/tophy -iname 'index*' |
คำสั่งข้างบนจะเป็นการค้นหาไฟล์ที่อยู่ใน directory /home/tophy และ subdirectory
คำสั่งแรกจะใช้ parameter -name เพื่อระบุชื่อไฟล์และตามด้วย 'index*' ซึ่งหมายความว่าเป็นไฟล์ใดๆ ที่ขึ้นต้นด้วยคำว่า index
คำสั่งที่ 2 จะคล้ายกับคำสั่งแรกแต่จะใช้ parameter -iname ซึ่งเป็นการไม่สนใจตัวอักษรเล็กหรือใหญ่ (non-case sensitive) เช่น ชื่อไฟล์ที่ขึ้นต้นด้วย Index, inDex, INDEX เป็นต้น
$ find /home/tophy -name 'index*' 2>/dev/null |
คำสั่งด้านบนจะคล้ายกับตัวอย่างก่อนหน้าแต่จะเพิ่มในส่วน 2>/dev/null ซึ่งหมายความว่าระหว่างการค้นหาถ้ามี error message เกิดขึ้นจะนำ error message ไปใส่ไว้ใน /dev/null ซึ่งเป็นอุปกรณ์ที่ไม่ว่าจะใส่อะไรเขาไปสิ่งนั้นก็จะหายไป ถ้าเราต้องการดู error message ทำได้โดยเปลี่ยนจาก /dev/null เป็นชื่อไฟล์ใดๆ ไว้เก็บ error message ปัญหาที่อาจะะเกิดขึ้นได้ เช่น ผู้ใช้ไม่ได้เป็น root แต่ find ในส่วนของ root
$ find -name met* |
รูปแบบคำสั่งแบบนี้จะไม่ระบุ path เหมือนคำสั่งก่อนหน้าซึ่งหมายความว่าให้ค้นหาไฟล์ที่ขึ้นต้นด้วยคำว่า met จาก directory ปัจจุบันและ subdirectory จากคำสั่งข้างต้นสามารถนำมาประยุกต์ได้ เช่น
find . -print find . find |
คำสั่งทั้ง 3 จะเป็นการแสดงรายชื่อไฟล์ทั้งหมดที่อยู่ใน directory ปัจจุบัน
$ find / -name '*.mp3' -size -5000k $ find / -size +10000k |
คำสั่งแรกจะค้นหาจากตำแหน่ง / โดยค้นหาไฟล์ที่ลงท้ายด้วย .mp3 และมีการกำหนด parameter -size เข้าไปเพื่อระบุว่าค้นหาไฟล์ที่มีขนาดน้อยกว่า 5MB (-5000k)
คำสั่งที่ 2 จะคล้ายคำสั่งแรกแต่จะเป็นการค้นหาไฟล์ใดๆ ก็ได้ที่มีขนาดไฟล์มากกว่า 10MB (+10000k)
$ find /home/tophy -amin -10 -name '*.c' $ find /home/tophy -atime -2 -name '*.c' $ find /home/tophy -mmin -10 -name '*.c' $ find /home/tophy -mtime -2 -name '*.c' |
คำสั่งแรกจะค้นหาไฟล์จากตำแหน่ง /home/tophy ชื่อไฟล์ที่ลงท้ายด้วย .c ที่ access ไปเมื่อ 10 นาทีที่แล้ว
คำสั่งที่ 2 คล้ายกับคำสั่งแรกจะต่างที่เวลาที่ access จะเป็นช่วง (2-1)*24-2*24 ชม. นั่นก็คือ 24-48 ชม.
คำสั่งที่ 3 คล้ายกับคำสั่งแรกแต่จะค้นหาไฟล์ที่มีการ modified เมื่อ 10 นาทีที่แล้ว
คำสั่งที่ 4 คล้ายกับคำสั่งแรกแต่จะค้นหาไฟล์ที่มีการ modified เป็นช่วง (2-1)*24-2*24 ชม. นั่นก็คือ 24-48 ชม.
ระบบการนับทั้ง atime และ mtime ถ้าเราใส่ค่า 0 หรือ -1 จะหมายถึงเวลาภายใน 24 ชม.
$ find / -name 'Claymore*' -and -size +10000k $ find / -size +10000k ! -name "Claymore*" $ find / -name 'Claymore*' -or -size +10000k |
คำสั่งทั้ง 3 เป็นการประยุกต์ใช้ boolean operator มาช่วยในการค้นหาไฟล์
คำสั่งแรก ค้นหาไฟล์เริ่มที่ตำแหน่ง / ที่ขึ้นต้นด้วยคำว่า Claymore และขนาดไฟล์มากกว่า 10MB
คำสั่งที่ 2 ค้นหาไฟล์เริ่มที่ตำแหน่ง / ที่มีขนาดไฟล์มากกว่า 10MB และต้องเป็นไฟล์ที่ไม่ได้ขึ้นต้นด้วยคำว่า Claymore
คำสั่งที่ 3 ค้นหาไฟล์เริ่มที่ตำแหน่ง / ที่ขึ้นต้นด้วยคำว่า Claymore หรือไฟล์ใดๆ ที่มีขนาดมากกว่า 10MB
$ find / - name 'Claymore*' -exec ls -l |
รูปแบบคำสั่งแบบสุดท้ายจะมีความหลากหลายมากขึ้นประสิทธิภาพของการค้นหาจะขึ้นอยู่กับการนำไปประยุกต์ของผู้ใช้ parameter ของคำสั่งนี้คือ -exec ซึ่งค่าตามหลังจะเป็นคำสั่งที่ทำงานหลังจากคำสั่ง find ด้านหน้าทำงานเสร็จสิ้น ในตัวอย่างจะเป็นการหาไฟล์ที่ขึ้นต้นด้วยคำว่า Claymore เริ่มที่ตำแหน่ง / จากนั้นนำผลลัพธ์ที่ได้มาแสดงผลโดยโชว์รายละเอียดของไฟล์ด้วยคำสั่ง ls -l
นอกจากวิธีการจากตัวอย่างทั้งหมดแล้วการใช้ find ยังมี parameter อีกหลายตัวที่มีความซับซ้อนและต้องทำความเข้าใจอีกมาก เช่น
-regex ใช้ regular expression ช่วยในการค้นหา -iregex เหมือนกับคำสั่งด้านบนแต่เป็น non-case sensitive -empty ค้นหาไฟล์หรือ directory ที่ว่างเปล่า -type ค้นหาตามประเภทของไฟล์ -user ค้นหาไฟล์ที่มีเจ้าของเป็น user ที่ต้องการ -group ค้นหาไฟล์ตาม group ที่ต้องการ |
credit:http://www.codecoffee.com/tipsforlinux/articles/21.html,
http://www.secguru.com
ref: http://top85.spaces.live.com/blog/cns!D84A636C1EFDB724!229.entry
No comments:
Post a Comment