Не існує обмеження (крім доступної пам'яті) кількості файлів, які можуть бути розширені 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*