Рекурсивно ітерацію файлів у каталозі легко зробити:
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"' {} \;
це кращий спосіб зробити це.