Arricciamento parallelo con file input e output filename sulla shell Linux


1

Di solito scaricai file in parallelo con curl e url in un file come questo:

cat links.txt | parallel --will-cite curl --connect-timeout 5 --max-time 10 --retry-max-time 40 --retry 5 --retry-delay 0 -s -f -O -C -

Dove links.txt ha un url per riga.

Ora ho bisogno di assegnare un nome file personalizzato a ciascun file e non riesco a capire come aggiungere questo secondo input a curl depressione parallel. Tra le altre cose, ho provato ad aggiungere -o filename ad ogni riga di links.txt ma non ha funzionato.

Saluti,


Mostraci come lo faresti se dovessi fare 3 "a mano" (cioè senza usare GNU Parallel). (E considera la corsa parallel --bibtex una volta).
Ole Tange

copia-incolla e cambia url un nome file di questo: curl --connect-timeout 5 --max-time 10 --retry-max-time 40 --retry 5 --retry-delay 0 -s -f -C - -o filename1 url1
kurokirasama

Vuoi davvero che tutti gli URL vengano salvati filename1?
Ole Tange

NOP. mezzi di copia-incolla curl ... filename1 url1, curl ... filename2 url2 , eccetera
kurokirasama

Risposte:


1

Secondo man parallel, puoi usare alcuni segnaposti per aiutarti. Ad esempio, potresti riscrivere il tuo codice per:

parallel curl "${CURL_ARGS[@]}" -o '{#}'.curl_output '{}' :::: links.txt

dove ${CURL_ARGS[@]} sono tutti i tuoi argomenti curl e links.txt ha un URL per riga. Questo comando recupera gli URL in links.txt e memorizzerà il risultato in un file chiamato dopo il numero del lavoro rispetto all'arricciatura (ad es. 10.curl_output ). Dovresti marcare il numero del lavoro con gli URL.

Un altro approccio sarebbe chiamare curl con -o '{}'._curl_output. In questo caso, dovresti gestire caratteri speciali negli URL ( /, per esempio).

Oltre a questi, puoi anche dividere le colonne su a links.txt che contiene un URL e un file di output per riga. Questo ti permetterebbe di farlo

parallel --colsep " " curl "${CURL_ARGS[@]}" -o '{1}' '{2}' :::: links.txt

Il --colsep dividerà le righe in base al delimitatore come argomento ( " " in questo caso).


Grazie! La tua terza opzione era esattamente quello che stavo cercando. Tuttavia, le altre opzioni possono essere utili in altre situazioni ...
kurokirasama
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.