如何将值列表作为单个参数列表传递给xargs?

时间:2013-07-03 08:01:46

标签: bash xargs

我知道我可以使用xargs获取文件列表,并为每个文件运行一次命令。

我想要做的是将文件列表作为单个参数列表传递给命令。例如:

ls | tail -10

输出

a
b
c
d

但是我想将它传递给一个命令,它会收到这样的列表:

command a b c d

我猜xargs是这项工作的最佳工具,但我对任何事情都持开放态度。更容易记住更好。

3 个答案:

答案 0 :(得分:2)

只需使用引号和变量扩展:

command "$(ls | tail)"

测试(command):

#!/bin/bash
echo $1

输出:

 a b c d

答案 1 :(得分:1)

只需

ls|xargs command

会做的。当然,如果列表不超过命令行长度限制,

command `ls`

也足够了。

答案 2 :(得分:1)

你可以尝试:

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