สิ่งต่อไปนี้คือสิ่งที่ฉันเป็น แต่รหัสของฉันไม่ทำงานไม่ว่าฉันจะหลบหนี{}
และ+
;
find ./ -maxdepth 1 -type d -name '.*' -exec \
find {} -maxdepth 1 -type f -name '*.ini' -exec \
md5sum \{\} \\; \;
หลังจากเห็นคำถาม Unix - & - Linuxนี้ฉันพบว่าโค้ดต่อไปนี้ใช้งานได้ แต่ไม่พบการซ้อนกันและฉันสงสัยว่ามีวิธีที่ดีกว่าในการทำงานนี้โดยเฉพาะ
find ./ -maxdepth 1 -type d -name '.*' \
-exec bash -c 'for x; do
find "$x" -maxdepth 1 -type f -name "*.ini" \
-exec md5sum \{\} \;; \
done' _ {} \+
มีวิธีการทำรังfind -exec
โดยไม่จำเป็นต้องเรียกเปลือกหอย (ดังกล่าวข้างต้น) ด้วยการอ้างและหลบหนีข้อ จำกัด ทั้งหมดหรือไม่?
หรือสิ่งนี้สามารถทำได้โดยตรงในคำสั่งค้นหาเดียวโดยใช้การผสมผสานของพารามิเตอร์จำนวนมาก?
find
แต่ถ้าfind
ไม่สามารถทำเช่นนี้แล้วทำไมfind
จึงเคารพนับถือ (?)เป็นยืด การใช้งานสำหรับการค้นหาไฟล์? ... ฉันพบว่า subseqeuntly ใช้find ./ -maxdepth 2 -path '.*/*.ini' -type f -exec md5sum {} \+
งานได้ดีในสถานการณ์ของฉัน (การอ้างอิงของ jw013 เพื่อ-prune
นำฉันไปที่นี้ในหน้าคน) แต่ฉันสงสัยว่ามันเป็นวิธีที่มีประสิทธิภาพ (ในจำพวก) ฉันไม่เคยใช้จริง ๆfind
(ในเวลาน้อยกว่าหนึ่งปีของ Linux) อย่างที่locate
ทำเกือบทั้งหมดที่ฉันต้องการ
-path
ทดสอบเป็นสิ่งที่ฉันอยากจะแนะนำ ด้วยสิ่งนี้คุณควรจะสามารถทำทุกสิ่งที่คุณต้องการ (ขออภัยสำหรับสมาคม Ace Of Base;))