4
2

More than 5 years have passed since last update.

xargs

Posted at

-I

置換文字列の指定

$ yes | xargs -I {} echo {} 
y
y

-i

gnu のみ。{} を置換文字列として使用すると宣言

$ yes | xargs -i echo {} 
y
y

-J

bsd のみ。パイプされた引数を一つの置換文字列にセットする。

$ seq 1 10 | xargs -J {} echo {} no
1 2 3 4 5 6 7 8 9 10 no

-L

$ yes | xargs -L 10 -t
/bin/echo y y y y y y y y y y
y y y y y y y y y y

パイプから一度に、10行受けとる。

-n

$ yes | xargs -n 5 -t
/bin/echo y y y y y
y y y y y

コマンド(ここでは、-t )に一度に与える引数の数を指示する。

-L & -n

$ yes | xargs -L 10 -n 5 -t
/bin/echo y y y y y
y y y y y

受けとるのは 10行でも与えるのは 5行

-P

$ yes | xargs -P 5 -I {}  bash -c "echo {} && sleep 1 ;"
y
y
y
y
y
(一休み)

一度に実行するプロセスの数を指定

function を渡したい。

  1. funciton 定義(当然 .bashrc に書かれてるなら省略可)
  2. export -f func
  3. bash -c "func {}"

スクリプト内ならともかく、ワンライナーで、こんな手間掛けるくらいなら、別の手段考えるわ。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2