1
resposta

Globbing funciona de forma diferente entre comandos ?

Olá,

Durantes a aulas com o comando mkdir gostei bastante das possibilidades de combinação com o Globbing e foi natural tentar aplicar algumas das possibilidades que vimos no curso 3. Mas ao tentar fazer algo como:

mkdir fotos/202[1-5]

O que eu esperaria obter seria o mesmo que a execução mkdir fotos/20{1,2,3,4,5}, mas o que ocorre é que o subdiretório neste exemplo é interpretado como uma "string", então obtenho o diretório: fotos/'20[1-5]' .

Então acabou ficando confuso para mim o escopo do globbing neste caso (que penso ser um recurso do bash, mas parece que um operador que funciona com o locate não funciona com o mkdir ou ls, por exemplo). Alguém poderia me ajudar a entender melhor esse recurso ?

Ps. Notei que a ultima questão deste fórum é de um colega que teve a mesma dúvida há mais de um ano, como ele não obteve resposta achei melhor criar um novo tópico para reforçar essa dúvida.

1 resposta

Olá, Daniel. Tudo bem?

Para fazer a criação de vários diretórios sequenciais você deve usar {1..n} com o sinal de chaves. É uma sintaxe de range, diferente do sinal de colchetes [] que é usado para padrões.

Para criar os diretórios fotos/2021, fotos/2022, fotos/2023, fotos/2024 e fotos/2025, você pode usar:

mkdir fotos/202{1..5}

Para criar diretórios teste1, teste2, teste3, teste4 e teste5 dentro de todos os diretórios 202X recém-criados:

mkdir 202{1..5}/teste{1..5}

Para listar, você pode usar o sinal de colchetes [], que irá fazer o reconhecimento de padrões :

# dentro do diretório fotos:

ls 202[1-5]

A saída vai ser a listagem dos arquivos dentro de cada um dos diretórios que corresponderem ao padrão usado [1-5]:

2021:
teste1  teste2  teste3  teste4  teste5

2022:
teste1  teste2  teste3  teste4  teste5

2023:
teste1  teste2  teste3  teste4  teste5

2024:
teste1  teste2  teste3  teste4  teste5

2025:
teste1  teste2  teste3  teste4  teste5

Espero ter ajudado. Se tiver alguma dúvida, é só dizer.