Bash Loop através de arquivos em um diretório?

Bash Loop através de arquivos em um diretório?

Às vezes, de acordo com nossos requisitos, precisamos nos mover e percorrer todos os arquivos e diretórios em uma determinada pasta. Suponhamos que queremos executar um comando específico em cada pasta e arquivo de um diretório. Para esse fim, iremos iterar em todos os diretórios usando loops. Apenas alguns utilitários da CLI ou utilitários de linha de comando nos permitem executar o mesmo comando para vários arquivos. Mas, no nosso caso, usamos scripts de shell e usando o loop para acelerar qualquer comando que queremos tornar nosso trabalho eficiente.

Não apenas no nosso caso, mas fazer loop em toda a programação é uma abordagem e prática muito eficientes e poderosas. Devido ao looping, podemos aplicar o mesmo conceito em vários arquivos e em um grupo de itens usando a quantidade mínima de código para obter a saída desejada. Para percorrer os diretórios e arquivos em bash, usamos um padrão global chamado "Wild Card", que é um padrão padrão que corresponde a todos os arquivos. Mas vamos combinar apenas diretórios usando "/" no final de nosso comando. Depois disso, atribuímos a cada diretório o valor do diretório 'dir' disponível. Finalmente, usaremos o comando Echo para que o loop seja executado pelos diretórios. Tecnicamente, para executar a tarefa, primeiro precisamos inicializar uma variável, então atribuímos o conjunto de dados à variável que queremos fazer um loop. No nosso caso, ele percorre os diretórios usando o personagem Wild Card '*'.

Sintaxe:

Abaixo está a sintaxe para percorrer os diretórios.

para f in/pasta/* pasta/**/*; fazer
instrução
feito;

Nisso, estamos usando o loop for junto com a variável "f" que será criada. Ele define a ação a ser executada cada vez que o loop for executado. Então, depois de definir o conjunto de dados do qual ele passará, definiremos um caminho a partir do qual os arquivos devem ser buscados ou simplesmente usarão o asterisco "*", que permitirá que o compilador busque o diretório atual. No nosso caso, passamos dois caminhos com o nome "Pasta", a "/pasta/*" buscará os arquivos na pasta, enquanto "pasta/**/*" buscará os arquivos de suas subpastas.

Exemplo não. 1:

Vamos tentar o método de loop nos diretórios ou arquivos para ter uma idéia melhor de seu trabalho. Para isso, vamos primeiro verificar a versão da festa que estamos tendo agora, porque a versão deve ser atualizada para usar o loop. Para verificar a versão do Bash, executaremos o comando:

Linux@linux -virtualbox: ~ $ Bash -version

Ele exibirá a versão do Bash que está em execução atualmente em nosso sistema, o mesmo que mostrado abaixo, em nosso sistema, é “5.0,17 ”.

Agora, para executar o loop, primeiro criaremos um novo diretório em nosso sistema no qual adicionaremos alguns arquivos. Para criar um novo diretório, executaremos o comando:

Linux@linux-virtualbox: ~ $ mkdir linux

Depois de executar o comando acima, ele não executará nada, simplesmente entregará o terminal a você para executar outros comandos, como podemos ver abaixo.

Agora, para verificar se nosso diretório é criado ou não com sucesso, iremos aos arquivos em nosso sistema e depois nos moveremos dentro do diretório inicial, você pode ver a pasta chamada "Linux" criada. Uma pergunta pode surgir em sua mente por que estamos verificando a pasta no diretório doméstico? Isso é apenas porque não fornecemos nenhum caminho para ele, é por isso que sempre cria novas pastas ou arquivos por padrão no diretório doméstico.

Agora, temos que criar arquivos no diretório Linux para isso, primeiro mudaremos para o nosso diretório Linux usando o comando "CD", como mostrado abaixo:

Linux@linux-virtualbox: ~ $ CD Linux

Depois de executar o comando nosso terminal, ficará assim.

Usando o comando "Echo", criaremos um novo arquivo com algum texto fictício, executando o seguinte comando:

Linux@linux-virtualbox: ~/linux $ eco “meu novo arquivo 1”> myfile_a.TXT
Linux@linux-virtualbox: ~ /linux $ eco “meu novo arquivo 1”> myfile_b.TXT
Linux@linux-virtualbox: ~ /linux $ eco “meu novo arquivo 1”> myfile_c.TXT
Linux@linux-virtualbox: ~ /linux $ eco “meu novo arquivo 1”> myfile_d.TXT

Criamos 4 arquivos em nosso diretório Linux, nomeando -os "myfile_a", "myfile_b",

"Myfile_c" e "myfile_d", que podemos ver no trecho abaixo. Existem várias maneiras de criar novos arquivos, como usar o editor de texto Nano, usando o comando CAT, usando o comando touch e muito mais. Não é obrigatório sempre usar o Echo, você pode usar qualquer comando que desejar.

Como criamos nossos arquivos, é hora de recrutar todos os arquivos usando o loop. Para executar isso, vamos executar outro comando.

Linux@linux-virtualbox: ~ /linux $ para f in *; eco $ f; feito

No comando acima, criamos uma variável "f" que definirá a ação que será tomada na execução do loop. No nosso caso, estamos exibindo os nomes de arquivos armazenados no diretório Linux, como podemos ver no trecho abaixo.

Ao usar o comando acima, exibimos os nomes de arquivos que são armazenados no diretório Linux. Suponhamos que queremos exibir o conteúdo junto com o nome do arquivo, também pode ser feito usando o loop em vez de escrever o comando Echo repetidamente.

Linux@linux-virtualbox: ~ /linux $ para f in *; eco $ f; feito

Como mostrado abaixo, o conteúdo de todos os arquivos é exibido abaixo separado pela nova linha. No comando acima, criamos uma variável "f", não é necessário criar a mesma variável. Você pode criar qualquer variável de acordo com sua necessidade, não é obrigatória usar "f".

Conclusão

Hoje, estudamos loop nos diretórios, apresentamos você ao loop for usado para buscar arquivos de diretórios e também com seus trabalhos. Explicamos a você o método para usar "para loop" para buscar os diretórios usando um exemplo simples no qual criamos um novo diretório e arquivos, então simplesmente os acessamos usando "para loop".