A expansão de chave (isto é, {this,that,etc}
) não é um arquivo glob, o que significa que ele se expande para todos os valores, haja ou não um arquivo com esse nome. Assim, dir{,_a[12]}/**/*.c
expande para os dois padrões de glob dir/**/*.c
e dir_a[12]/**/*.c
. O segundo expande para o único arquivo correspondente, dir_a1/src/file.c
, mas o primeiro não corresponde a nada e, portanto, é deixado sozinho (e, portanto, é reproduzido literalmente).
Se você não quiser passar globs sem correspondência, defina a opção nullglob
shell, via shopt -s nullglob
. Mas esteja ciente de que isso fará com que outras coisas ajam de maneiras estranhas, como ls /etc/*.nosuchextension
listando o conteúdo do diretório atual. Outra maneira de lidar com globs incomparáveis é a opção failglob
shell.