Нет ограничений (кроме доступной памяти) на количество файлов, которые могут быть расширены bashглобусом.
Однако , когда эти файлы передаются в качестве аргументов команды, которая выполнена (в отличие от оболочки или встроенной команды функции), то вы можете столкнуться с пределом execve()системного вызова на некоторых системах. В большинстве систем этот системный вызов имеет ограничение на совокупный размер аргументов и передаваемой ему среды, а в Linux также отдельное ограничение на размер одного аргумента.
Для более подробной информации смотрите:
Чтобы обойти это ограничение, вы можете использовать (при условии, что GNU xargsили совместимый):
printf '%s\0' foo* | xargs -r0 rm -f
Выше, поскольку printfон встроен ( bashи в большинство оболочек типа Борна), мы не достигли execve()предела. И xargsразделит список аргументов на столько rmвызовов, сколько необходимо, чтобы избежать execve()ограничения.
С zsh:
autoload zargs
zargs foo* -- rm -f
С ksh93:
command -x rm -f foo*