Não há limite (exceto a memória disponível) para o número de arquivos que podem ser expandidos por um bash
globo.
No entanto, quando esses arquivos são passados como argumentos para um comando que é executado (em oposição a uma função ou função interna do shell), você pode executar um limite de execve()
chamada do sistema em alguns sistemas. Na maioria dos sistemas, essa chamada do sistema tem um limite no tamanho cumulativo dos argumentos e no ambiente transmitidos a ela, e no Linux também um limite separado no tamanho de um único argumento.
Para mais detalhes, consulte:
Para contornar esse limite, você pode usar (assumindo GNU xargs
ou compatível):
printf '%s\0' foo* | xargs -r0 rm -f
Acima, como printf
é embutido (na bash
maioria das conchas do tipo Bourne), não atingimos o execve()
limite. E xargs
dividirá a lista de argumentos em quantas rm
invocações forem necessárias para evitar a execve()
limitação.
Com zsh
:
autoload zargs
zargs foo* -- rm -f
Com ksh93
:
command -x rm -f foo*