Como eu traduzo o seguinte comando “for / f” do cmd para um comando equivalente no Linux centos 6,64?

2

Como eu poderia traduzir o seguinte comando CMD para um comando no linux centos 6,64?

for /f "tokens=1*" %i in (links.txt) do wget -O "%j" "%i"

PS: links.txt é um arquivo com 2 colunas separadas por aba, uma com o link e outra com o nome sobre como salvar o arquivo.

Obrigado

    
por Mike 21.02.2018 / 05:26

1 resposta

2

awk

Mesmo que seja possível ler um arquivo e compor o comando que você quer em um ciclo, há um comando que você pode achar mais confortável: awk .

Se o nome do arquivo for todo sem espaços, você pode usar essa sintaxe simples para criar o comando desejado e, em seguida, redirecionar ( | ) essa saída para um shell ( sh ) que o executará. Com $1 , você pega a primeira coluna, com $2 a segunda e assim por diante ...

awk '{print "wget -O "$2,$1}' links.txt | sh

Se houver espaços nos nomes, você deve fazer mais alguns exercícios:

awk -F $'\t' '{print "wget -O\""$2"\" " $1}' links.txt | sh

Aqui você deve especificar que o separador de campo -F é a guia ( -F $'\t' ) e você tem que imprimir o " antes e depois do nome do arquivo. Uma vez que você está dentro de uma string, você precisa escapar [ 2 ] para eles echo "Those are double quote\"" .

Tente este comando sem o redirecionamento (então sem o | sh ) para ter a possibilidade de controlar a saída, então execute-o quando tiver certeza ...

Use man awk para ter mais ajuda.

    
por 21.02.2018 / 23:17