การค้นหาไฟล์ |
ในระบบปฎิบัติการ Unix เราสามารถหาค้นหาไฟล์ที่ต้องการได้ ถ้าเทียบกับ dos ก็คงจะคล้าย ๆ เราบอกว่า dir *.bat /s อะไรทำนองนั้นแหละครับ นี่หมายถึงการค้น หาไฟล์ อะไรก็ได้ ที่มีนามสกุล .bat ใน unix ก็มีคำสั่งในการค้นหาชื่อไฟล์ ที่เราต้องการได้เหมือนกัน คำสั่งนั้นคือ find การทำงานของคำสั่ง เขาจะเริ่มค้นหาไฟล์ ในไดเรกทอรีที่เราระบุ และวิธีการค้นหา ไฟล์ที่ต้องการก็จะ ค้นหาไฟล์ตามออปชั่นที่เราระบุ รูปแบบของคำสั่งเป็นดังนี้ครับ
$find directory options |
ระบบปฎิบัติการเขาจะค้นหาไฟล์ ตามออปชั่นที่เราระบุลงไป โดยการระบุออปชั่นนั้นเราสามารถ ระบุได้หลาย ๆ ตัวครับ ยิ่งเราระบุ ออปชั่นมากขึ้นเท่าใด ผลที่ได้ก็จะได้ไฟล์ที่ใกล้เคียงกับไฟล์ที่เราอยากได้มากขึ้น เรียกว่า ยิ่งเราระบุออปชั่นมากขึ้นเท่าใด ผลที่ได้ก็จะยิ่งแคบลง แคบลงเท่านั้นครับ
ออปชั่นต่าง ๆ มีดังนี้ครับ (คุณสามารถอ่านรายละเอียดของคำสั่งได้ จาก การ ใช้คำสั่ง man ดูจากเครื่องเลยก็ได้ครับ)
-name filename
เป็นการระบุชื่อไฟล์ ให้ระบบฯ เขาค้นหาชื่อไฟล์ตามที่เราระบุลงไปครับ ในกรณีที่เรา
ระบุชื่อไฟล์ แล้วใช้ wildcard character ให้เราใช้เครื่องหมาย single quotes (') คร่อมชื่อไฟล์
นั้นไว้ เช่นผมต้องการหาไฟล์ทุกไฟล์ที่ลงท้ายด้วย 's' และให้ระบบฯ เขา
เริ่มหาไฟล์จากไดเรกทอรีปัจจุบันที่ผมอยู่ ใช้คำสั่งได้ดังนี้ครับ
$find . -name '*s' -print ./programs ./programs/graphics ./programs/graphics/gks ./src/gks $ |
ออปชั่นแต่ละตัวนั้น เราสามารถนำมาใช้ร่วมกันได้ครับ โดยการใช้ร่วมกันนั้น ก็ให้ใช้วงเล็บ ครอบออปชั่นที่เราต้องการ ตัวอย่างเช่น
$find . \( -name AAA -o -name BBB \) -print ./AAA ./BBB |
ในตัวอย่างถัดไปเป็นตัวอย่างการใช้ออปชั่น -exec ในที่นี้ผมต้องการค้นหาไฟล์ที่ชื่อ junk หรือ dummy เสร็จแล้วเมื่อเจอไฟล์ใด ในสองไฟล์นี้ ก็ให้ลบ ไฟล์นั้น ๆ ทิ้งซะ สามารถใช้คำสั่งได้ดังนี้ครับ
$find . \( -name junk -o -name dummy \) -exec rm '{} \; |