Se todos os arquivos em questão tiverem o mesmo prefixo
(ou seja, o texto antes do número; c neste caso), você pode usar
gs …args… c?.pdf c??.pdf
c?.pdf expande para c0.pdf c1.pdf … c9.pdf .
c??.pdf expande para c10.pdf c11.pdf … c20.pdf
(e até c99.pdf , conforme aplicável).
Enquanto cada palavra da linha de comando contendo o (s) caractere (s) de expansão do nome do caminho
é expandido para uma lista de nomes de arquivos classificados (agrupados) de acordo
com a variável LC_COLLATE ,
as listas resultantes da expansão de curingas adjacentes (globs)
não são mesclados; eles são simplesmente concatenados.
(Eu pareço lembrar que a página de manual do shell uma vez declarou isso explicitamente,
mas não consigo encontrá-lo agora.)
Claro, se os arquivos podem ir até c999.pdf ,
você deve usar c?.pdf c??.pdf c???.pdf .
Evidentemente, isso pode ser entediante se você tiver muitos dígitos.
Você pode abreviá-lo um pouco; por exemplo, para (até) cinco dígitos,
você pode usar c?{,?{,?{,?{,?}}}}.pdf .
Se a sua lista de nomes de arquivos é esparsa
(por exemplo, há um c0.pdf e um c12345.pdf
mas não necessariamente todos os números entre eles),
provavelmente você deve definir a opção nullglob .
Caso contrário, se (por exemplo) você não tiver arquivos com números de dois dígitos,
você receberia um argumento literal c??.pdf passado para o seu programa.
Se você tiver vários prefixos
(por exemplo, a<number>.pdf ,
%código%,
e b<number>.pdf ,
com números de um ou dois dígitos),
você pode usar a abordagem óbvia de força bruta:
a?.pdf a??.pdf b?.pdf b??.pdf c?.pdf c??.pdf
ou reduza para c<number>.pdf .