xargs 平行化處理指令
Posted on Tue 19 July 2016 in note
直接先上範例
xargs -a data.txt -I % -P 0 bash -c "sleep 1; echo %"
我要解決的問題是,我有一個文字檔 data.txt,其內容是我要處理的資料,一行一筆。我希望可以同時處理這些資料。答案就是上面的範例。
data.txt 的內容是
a
b
c
d
e
f
現在來解釋一下參數:
-
-a data.txt從 data.txt 直接讀入參數,而不是從
STDIN。 -
-P 0最大執行的 process 數量。平行化的主要參數,
0是盡可能大。以範例來看的話,設-P 2,你就會看到一秒印兩行字。( 等一秒 )
a
b
( 等一秒 )
c
d
( 等一秒 )
e
f -
-I %將後面的命令中的
%換成data.txt中你要塞進來的參數。範例會被展開底下的樣子。%可以換成其他字串,像{}。bash -c "sleep 1; echo a"
bash -c "sleep 1; echo b"
bash -c "sleep 1; echo c"
bash -c "sleep 1; echo d"
bash -c "sleep 1; echo e"
bash -c "sleep 1; echo f"另外,用了
-I同時也隱含啟用了-L 1。