Use o curl para baixar a lista de arquivos no csv

1

Eu tenho um csv de extensões de URL do JPG.

http://www.example.com/images/[url_extension]

Eu quero usar o curl para percorrer o CSV e fazer o download do jpg em cada extensão. Até agora eu tenho o seguinte, mas estou lutando com a sintaxe. Qualquer ajuda é muito apreciada.

#!/bin/bash
file=urlextensions.csv

while read line
do
outfile=$(echo $line | awk 'BEGIN { FS = "/" } ; {print $NF}')
curl -o "$http://www.example.com/images/" "$line" 
done < "$/Users/Me/Documents/urlextensions.csv"
    
por muru 07.10.2015 / 08:25

1 resposta

2

Existem alguns erros no seu código:

  1. Você define file na linha 2, mas não o usa no loop.
  2. Colocar $ na frente das coisas fará com que o shell tente substituí-lo, o que provavelmente não é o que você deseja quando executar $http ou $/Users .
  3. Você define outfile em seu loop, mas não o usa. Talvez você quisesse colocá-lo após o -o na sua linha de onda.
  4. O argumento -o para curl deve ser um nome de arquivo, mas você coloca o URL lá.
  5. O URL base ( http://www.example.com/images ) e a parte que você adiciona a ele precisam estar no mesmo argumento, não separados por um espaço que fará o shell pensar que são necessários dois argumentos.

Então acabo com:

#!/bin/bash

filename=./extensions.txt

while read line || [[ -n "$line" ]]; do
    echo downloading $line
    curl -o $line "http://example.com/$line"
done < "$filename"

Se você colocar isso em um nome de arquivo read_examp e torná-lo executável, poderá ver como funciona:

chicks$ cat extensions.txt 
foo
bar
baz
chicks$ ./read_examp 
foo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1270  100  1270    0     0  41794      0 --:--:-- --:--:-- --:--:-- 42333
bar
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1270  100  1270    0     0  53987      0 --:--:-- --:--:-- --:--:-- 55217
baz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1270  100  1270    0     0  48366      0 --:--:-- --:--:-- --:--:-- 48846
chicks$ ls -l 'cat extensions.txt'
-rw-r--r--  1 chicks  staff  1270 Oct  7 10:01 bar
-rw-r--r--  1 chicks  staff  1270 Oct  7 10:01 baz
-rw-r--r--  1 chicks  staff  1270 Oct  7 10:01 foo

Observação: você menciona os CSVs, mas seu código de exemplo parece não lidar com isso. Você pode estender isso com algo como este para extrair um campo do seu CSV em vez de usando toda a linha.

    
por 07.10.2015 / 19:03

Tags