วันพฤหัสบดีที่ 6 สิงหาคม พ.ศ. 2552

การค้นหา file บน Linux

การค้นหา file บน Linux (คำสั่ง find) #1
การค้นหา ไฟล์ใน linux สามารถทำได้หลายวิธีด้วยกันในหัวข้อนี้จะกล่าวถึงการค้นหาไฟล์โดยใช้เครื่อง มือ find คำสั่ง find เป็นคำสั่งที่ได้รับความนิยมในการใช้งานมากเพราะว่าใช้งานง่ายแต่ว่าจริงๆ แล้วคำสั่งนี้มี parameter มากมายถ้า เราเรียนรู้การใช้งาน parameter เหล่านั้นและใช้งานได้อย่างคล่องแคล่วแล้วล่ะก็เครื่องมือ find ก็ถือได้ว่าเป็นเครื่องมือที่เยี่ยมที่สุดสำหรับการค้นหาไฟล์ เราสามารถใช้คำสั่ง find แบบง่าย ได้เช่น
$ 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 . -printfind .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 ชม.

ไม่มีความคิดเห็น:

แสดงความคิดเห็น