Поширений спосіб робити кілька файлів - і не вдаряйте мене за це:
for f in $(ls); do …
Тепер, щоб бути захищеним від файлів із пробілами чи іншими дивними символами, було б зробити наївний спосіб:
find . -type f -print0 | while IFS= read -r -d '' file; …
Тут -d ''короткий для встановлення ASCII NUL як в -d $'\0'.
Але чому це так? Чому ''і $'\0'те саме? Це через C коренів Bash з порожнім рядком завжди закінчується нулем?
for f in *замість розбору ls.
for i in $(ls)це жахливо дурно - я майже соромлюсь, що я використав це як поганий приклад тут.
find … -execзамість того, щоб обробляти файли, що працює в більшості випадків, коли ви використовуєте такий цикл. Ось, findдбає про все за вас.