วนซ้ำซ้ำในไฟล์ต่างๆในไดเรกทอรีสามารถทำได้อย่างง่ายดายโดย:
find . -type f -exec bar {} \;
อย่างไรก็ตามข้างต้นไม่สามารถใช้ได้กับสิ่งที่ซับซ้อนมากขึ้นซึ่งต้องมีกิ่งที่มีเงื่อนไขการวนซ้ำ ฯลฯ ต้องทำ ฉันเคยใช้สิ่งนี้สำหรับข้างต้น:
while read line; do [...]; done < <(find . -type f)
อย่างไรก็ตามดูเหมือนว่าสิ่งนี้จะใช้ไม่ได้กับไฟล์ที่มีอักขระที่ไม่ชัดเจน
$ touch $'a\nb'
$ find . -type f
./a?b
มีทางเลือกอื่นที่จัดการกับตัวละครที่คลุมเครือเช่นนี้หรือไม่
read line
IFS= read -r line
ตัวละครเท่านั้นที่จะทำลายมันก็ขึ้นบรรทัดใหม่
-d $'\0'
ดีกว่า
find ... -exec bash -c 'echo filename is in \$0: "$0"' {} \;
เป็นวิธีที่ดีกว่าที่จะทำ