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.