Existe um máximo para bash expansão de nome de arquivo (globbing) e, se sim, qual é? Veja globbing em tldp.org.
Digamos que eu queira executar um comando em um subconjunto de arquivos:
grep -e bar foo*
rm -f bar*
Existe um limite para quantos arquivos o bash será expandido e, em caso afirmativo, qual é?
Não estou procurando maneiras alternativas de executar essas operações (por exemplo, usando find
).
bash
wildcards
bash-expansion
Thomas
fonte
fonte
Respostas:
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):Acima, como
printf
é embutido (nabash
maioria das conchas do tipo Bourne), não atingimos oexecve()
limite. Exargs
dividirá a lista de argumentos em quantasrm
invocações forem necessárias para evitar aexecve()
limitação.Com
zsh
:Com
ksh93
:fonte
Você pode ver o limite para o tamanho total dos argumentos com:
Geralmente, isso é determinado não pelo shell, mas pelo sistema operacional subjacente, de acordo com esta resposta .
fonte