xargs
ファイルのリストを取得し、それらのファイルごとにコマンドを 1 回実行するために使用できることはわかっています。
私がやりたいのは、ファイルのリストを単一の引数リストとしてコマンドに渡すことです。例えば:
ls | tail -10
出力
a
b
c
d
しかし、次のようにリストを受け取るコマンドにパイプしたいと思います。
command a b c d
xargs
が仕事に最適なツールだと思いますが、何でも受け入れます。覚えやすいほどよい。
引用符と変数展開を使用するだけです:
command "$(ls | tail)"
テストする ( command
):
#!/bin/bash
echo $1
出力:
a b c d
あなたは試すことができます:
command $(ls|tail -10|paste -s)
セパレータとしてスペースを使用する場合:
command $(ls|tail -10|paste -s -d" ")
また、xargsには-n
オプションがあり、試してみることができます。例えば:
kent$ seq 5
1
2
3
4
5
kent$ seq 5|xargs -n5
1 2 3 4 5
ただ
ls|xargs command
しましょう。もちろん、リストがコマンド ラインの長さの制限を超えていない場合は、
command `ls`
も十分です。