Команда printf
будет неявно зацикливаться, если задано больше аргументов, чем заполнителей в строке формата:
printf -- "--- %s\n" [a-c]*
Чтобы выполнить команду для каждого файла, вам нужно xargs
: я предполагаю, что у вас есть GNU xargs с опцией -0
:
printf "%s\0" [a-c]* | xargs -0 -I FILE echo aa FILE bb
Замените команду echo
xargs тем, что вам нужно, используя заполнитель "FILE", где вам нужно имя файла.
Используйте свое собственное суждение, чтобы определить, действительно ли это лучше или более приемлемо, чем цикл for.