O padrão de globbing do nome de 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 chaves será útil (mas veja a nota abaixo para a diferença entre padrões de globbing e expansões de chaves):
cat file{25..60}.txt
Novamente, a expansão de chaves também permite números individuais:
cat file{12,45,900,xyz}.txt
(note que no exemplo acima, a expansão da chave não envolve um loop aritmético, mas apenas gera nomes baseados nas strings fornecidas).
Em bash
, com a opção extglob
do 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 incluídos |
-delimited.
A diferença entre os padrões globbing como [...]
e @(...)
e expansões de chaves, é que uma expansão de chave é gerada na linha de comando e pode não corresponder realmente a nenhum nome existente no diretório atual. . Um padrão de agrupamento de nomes de arquivos corresponderá aos nomes, mas o shell não irá reclamar se nem todos os nomes possíveis existirem. Se nenhum nome correspondente existir, o padrão permanecerá não expandido, a menos que também a opção nullglob
shell esteja definida, caso em que o padrão é removido.
Exemplo:
touch file1
ls file[0-9]
Aqui, apenas a listagem de arquivos para file1
será mostrada.
Com ls file{0..9}
, ls
reclamaria por não encontrar file0
, file2
etc.
No exemplo a seguir, o primeiro comando só tocará em nomes existentes que correspondem ao padrão dado, enquanto a segunda linha criará arquivos que ainda não existem:
touch file[0-9]
touch file{0..9}