สิ่งต่อไปนี้คือสิ่งที่ฉันเป็น แต่รหัสของฉันไม่ทำงานไม่ว่าฉันจะหลบหนี{}และ+ ;
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;))