並列コマンドを実行し、出力を特定の名前のファイルにリダイレクトする

並列コマンドを実行し、出力を特定の名前のファイルにリダイレクトする

並列コマンドがどのように機能するのかわかりません。

次の簡単なコマンドを実行する必要があります。 (100回)

curl https://jsonplaceholder.typicode.com/todos/1
curl https://jsonplaceholder.typicode.com/todos/2
curl https://jsonplaceholder.typicode.com/todos/3
...
curl https://jsonplaceholder.typicode.com/todos/100

end は出力を次の名前のファイルにリダイレクトします。

1.txt
2.txt
3.txt
....
100.txt

答え1

このように:

parallel curl https://jsonplaceholder.typicode.com/todos/{} ">" {}.txt ::: {1..100}

20分ほど時間をかけてGNU Parallel 2018本(印刷版:http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.htmlオンライン:https://doi.org/10.5281/zenodo.1146014)。あなたのコマンドラインはあなたを愛するでしょう。

答え2

まあ、これは少し過度にエンジニアリングされたBashソリューションですが、うまくいき、次のコマンドの使用を明確にしてくださいparallel

function xx(){ curl "https://jsonplaceholder.typicode.com/todos/$1" > "$1.txt";}
parallel xx -- {1..100}

最初の行は、xx実行時にカールコマンドを実行させ、標準出力をファイルにリダイレクトする新しい「コマンド」または関数を生成します。関数xxは単一の数値を引数として使用し、関数本体内では最初の位置引数「$1」と呼ばれます。

parallel2行目は、リスト1、2、3、...、100の各パラメータに対して1回実行されるコマンドの使用を示していますxx(リスト1 2 3 ... 100は、次の条件でシェルによって生成されます。 )。 :){1..100}で支柱を拡張します。

parallelmoreutils注:この回答は、CommandsではなくDebianシステムパッケージのCommandsに関連していますGNU parallel

関連情報