Pular para o conteúdo

laço while

Responder tópico
  • Denunciar
  • Indicar

1. laço while

Enviado em 16/09/2020 - 00:05h

quero listar todos os arquivos que tenho num S3 um por um, linha usando um laço para realizar uma comparação arquivo por arquivo.

#!/bin/bash

quantArqui=$(aws s3 ls s3://minhapasta/arquivos | grep .txt -c) #quantidade de arquivos
arquivo=$(aws s3 ls s3://minhapasta/arquivos | grep .txt | awk '{print $4}' | head -1)

cont=1

while [[ $cont -le $quantArqui]]; do

echo "$arquivo"
let cont=cont+1

done

o problema é que eu não estou conseguindo, pois ele pega somente o primeiro arquivo.

Já tenteei assim:

#!/bin/bash

quantArqui=$(aws s3 ls s3://minhapasta/arquivos | grep .txt -c) #quantidade de arquivos
arquivo=$(aws s3 ls s3://minhapasta/arquivos | grep .txt | awk '{print $4}' | head -1)

cont=1

while [[ $cont -le $quantArqui]]; do

echo "$arquivo"
let cont=cont+1

done < $arquivo

tabém não vai!

Alguém pode me dar um help?

Responder tópico

2. Re: laço while

Enviado em 16/09/2020 - 16:58h

lacerdat25 escreveu:

quero listar todos os arquivos que tenho num S3 um por um, linha usando um laço para realizar uma comparação arquivo por arquivo.

#!/bin/bash

quantArqui=$(aws s3 ls s3://minhapasta/arquivos | grep .txt -c) #quantidade de arquivos
arquivo=$(aws s3 ls s3://minhapasta/arquivos | grep .txt | awk '{print $4}' | head -1)

cont=1

while [[ $cont -le $quantArqui]]; do

echo "$arquivo"
let cont=cont+1

done

o problema é que eu não estou conseguindo, pois ele pega somente o primeiro arquivo.

Já tenteei assim:

#!/bin/bash

quantArqui=$(aws s3 ls s3://minhapasta/arquivos | grep .txt -c) #quantidade de arquivos
arquivo=$(aws s3 ls s3://minhapasta/arquivos | grep .txt | awk '{print $4}' | head -1)

cont=1

while [[ $cont -le $quantArqui]]; do

echo "$arquivo"
let cont=cont+1

done < $arquivo

tabém não vai!

Alguém pode me dar um help?
Boa tarde Lacerda.
desconheço o "aws"....
Mas, o erro está em:
arquivo=$(aws s3 ls s3://minhapasta/arquivos | grep .txt | awk '{print $4}' |  head -1) 
head -n1, pega somente a 1ª linha......
Se, com o comando abaixo, a var arquivo tiver todos arqs ".txt", um arquivo por linha,
deve funcionar.....
#!/bin/bash
quantArqui=$(aws s3 ls s3://minhapasta/arquivos | grep -c ".txt") #quantidade de arquivos
arquivo=$(aws s3 ls s3://minhapasta/arquivos|awk '/txt$/ {print $4}')
cont=1
while read line; do
echo "Arq. Nº ${cont} ${line}"
let cont++
done < "$arquivo"
Ou
arquivo=$(aws s3 ls s3://minhapasta/arquivos|awk '/txt$/ {print $4}')
nl -n rz -w2 -s ' ' <<< $arquivo
Ou ainda...
aws s3 ls s3://minhapasta/arquivos|awk '/txt$/ {printf "%03d %s\n" ,NR,$4}'
Se não funcionar, poste a saída de :
aws s3 ls s3://minhapasta/arquivos

______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder