O padrão de globbing do nome do arquivo padrão para corresponder a um dígito é [0-9]
. Isso corresponde a um único dígito:
cat file[0-9].txt
Para selecionar apenas dois deles:
cat file[25].txt
Para números maiores que 9, a expansão de braçadeira será útil (mas veja a nota abaixo para saber a diferença entre padrões de globbing e expansões de braçadeira):
cat file{25..60}.txt
Mais uma vez, a expansão de chaves também permite números individuais:
cat file{12,45,900,xyz}.txt
(observe que no exemplo acima, a expansão de chave não envolve um loop aritmético, mas gera apenas nomes com base nas cadeias fornecidas).
Em bash
, com a extglob
opção de shell ativada ( shopt -s extglob
), o seguinte também funcionará:
cat file@(12|45|490|foo).txt
O @(...)
padrão corresponderá a qualquer um dos |
padrões delimitados incluídos .
A diferença entre os padrões de englobamento como [...]
e @(...)
e expansões cinta, é que uma expansão cinta é gerado na linha de comando e não pode realmente encontrou nenhum nomes existentes no diretório atual. Um padrão globbing de nome de arquivo corresponderá a nomes, mas o shell não reclamará se nem todo o nome possível existir. Se não existir um nome correspondente, o padrão permanecerá sem expansão, a menos que também nullglob
seja definida a opção shell, nesse caso o padrão será removido.
Exemplo:
touch file1
ls file[0-9]
Aqui, apenas a lista de arquivos file1
será exibida.
Com ls file{0..9}
, ls
iria reclamar por não encontrar file0
, file2
etc.
No exemplo a seguir, o primeiro comando tocará apenas nos nomes existentes que correspondem ao padrão especificado, enquanto a segunda linha criará arquivos que ainda não existem:
touch file[0-9]
touch file{0..9}
file45.txt
. A expressão entre colchetes[...]
funciona exatamente como na expressão regular, mas é usada!
no lugar de^
para dizer "not in". Um[...]
padrão sempre corresponderá a um único caractere.