<ก่อนหน้านี้ | Contents | ถัดไป>
การกระทำที่กำหนดไว้ล่วงหน้า
มาทำงานกันเถอะ! มีรายการผลลัพธ์จากเรา พบ คำสั่งมีประโยชน์ แต่สิ่งที่เราต้องการทำจริงๆ คือ ดำเนินการกับรายการในรายการ โชคดี, พบ อนุญาตให้ดำเนินการตามผลการค้นหา มีชุดของการดำเนินการที่กำหนดไว้ล่วงหน้าและหลายวิธีในการใช้การกระทำที่ผู้ใช้กำหนดเอง ขั้นแรก มาดูการดำเนินการที่กำหนดไว้ล่วงหน้าบางส่วน:
ตารางที่ 17-6: การดำเนินการค้นหาที่กำหนดไว้ล่วงหน้า
คำอธิบายการดำเนินการ
คำอธิบายการดำเนินการ
-delete ลบไฟล์ที่ตรงกันในปัจจุบัน
-ล ดำเนินการเทียบเท่ากับ ls -ดิล ในไฟล์ที่ตรงกัน
เอาต์พุตถูกส่งไปยังเอาต์พุตมาตรฐาน
-print เอาต์พุตชื่อพาธแบบเต็มของไฟล์ที่ตรงกันไปยังเอาต์พุตมาตรฐาน นี่เป็นการดำเนินการเริ่มต้นหากไม่มีการระบุการดำเนินการอื่น
-quit Quit เมื่อจับคู่เสร็จแล้ว
เช่นเดียวกับการทดสอบ มีการดำเนินการอีกมากมาย ดู พบ หน้าคนสำหรับรายละเอียดทั้งหมด ในตัวอย่างแรกของเรา เราทำสิ่งนี้:
หา ~
หา ~
ซึ่งสร้างรายการของไฟล์และไดเร็กทอรีย่อยทั้งหมดที่มีอยู่ในโฮมไดเร็กทอรีของเรา มันผลิตรายการเพราะ -พิมพ์ การกระทำจะถูกบอกเป็นนัยหากไม่มีการระบุการกระทำอื่น ดังนั้นคำสั่งของเราจึงสามารถแสดงเป็น:
ค้นหา ~ -print
ค้นหา ~ -print
เราสามารถใช้ พบ เพื่อลบไฟล์ที่ตรงตามเกณฑ์บางอย่าง เช่น การลบไฟล์ที่
มีนามสกุลไฟล์ “.BAK” (ซึ่งมักใช้เพื่อกำหนดไฟล์สำรอง) เราสามารถใช้คำสั่งนี้ได้:
find ~ -type f -name '*.BAK' -delete
find ~ -type f -name '*.BAK' -delete
ในตัวอย่างนี้ ทุกไฟล์ในโฮมไดเร็กทอรีของผู้ใช้ (และไดเร็กทอรีย่อย) จะถูกค้นหาด้วยชื่อไฟล์ที่ลงท้ายด้วย .บัก. เมื่อพบแล้วจะถูกลบออก
คำเตือน: มันควรจะไปโดยไม่บอกว่าคุณควร ใช้ความระมัดระวังอย่างยิ่ง เมื่อใช้ไฟล์ -ลบ การกระทำ. ทดสอบคำสั่งก่อนเสมอโดยแทนที่
-print action สำหรับ -delete เพื่อยืนยันผลการค้นหา
ก่อนที่เราจะไปต่อ มาดูกันว่าตัวดำเนินการตรรกะส่งผลต่อการดำเนินการอย่างไร พิจารณาคำสั่งต่อไปนี้:
find ~ -type f -name '*.BAK' -print
find ~ -type f -name '*.BAK' -print
ดังที่เราได้เห็น คำสั่งนี้จะค้นหาทุกไฟล์ปกติ (-type f) ที่มีชื่อลงท้ายด้วย .BAK (-name '*.BAK') และจะส่งออกชื่อพาธสัมพัทธ์ของแต่ละไฟล์ที่ตรงกันไปยังเอาต์พุตมาตรฐาน (-print) อย่างไรก็ตาม เหตุผลที่คำสั่งดำเนินการในลักษณะที่ถูกกำหนดโดยความสัมพันธ์เชิงตรรกะระหว่างการทดสอบและการดำเนินการแต่ละครั้ง โปรดจำไว้ว่า ตามค่าเริ่มต้นแล้ว มีความสัมพันธ์โดยนัยระหว่างการทดสอบและการดำเนินการแต่ละครั้ง นอกจากนี้เรายังสามารถแสดงคำสั่งด้วยวิธีนี้เพื่อทำให้ความสัมพันธ์เชิงตรรกะมองเห็นได้ง่ายขึ้น:
ค้นหา ~ -type f -and -name '*.BAK' -and -print
ค้นหา ~ -type f -and -name '*.BAK' -and -print
ด้วยคำสั่งของเราที่แสดงออกอย่างเต็มที่ มาดูกันว่าตัวดำเนินการเชิงตรรกะส่งผลต่อการดำเนินการอย่างไร:
การทดสอบ/การดำเนินการจะทำได้ก็ต่อเมื่อ...
การทดสอบ/การดำเนินการจะทำได้ก็ต่อเมื่อ...
-พิมพ์ -type f และ -name '*.BAK' เป็นจริง
-name '*.BAK' ประเภท f เป็นจริง
ประเภท f ดำเนินการเสมอ เนื่องจากเป็นการทดสอบ/การดำเนินการครั้งแรกใน an
- และความสัมพันธ์
เนื่องจากความสัมพันธ์เชิงตรรกะระหว่างการทดสอบและการดำเนินการกำหนดว่าการทดสอบใดดำเนินการ เราจะเห็นได้ว่าลำดับของการทดสอบและการดำเนินการมีความสำคัญ ตัวอย่างเช่น หากเราต้องจัดลำดับการทดสอบและการดำเนินการใหม่เพื่อให้ -พิมพ์ action เป็นคำสั่งแรก คำสั่งจะมีพฤติกรรมแตกต่างออกไปมาก:
ค้นหา ~ -print -and -type f -and -name '*.BAK'
ค้นหา ~ -print -and -type f -and -name '*.BAK'
คำสั่งเวอร์ชันนี้จะพิมพ์แต่ละไฟล์ (the -พิมพ์ การดำเนินการประเมินเป็นจริงเสมอ) จากนั้นทดสอบประเภทไฟล์และนามสกุลไฟล์ที่ระบุ