2013-07-03 60 views
3

我知道我可以使用xargs来获取文件列表并为每个文件运行一次命令。如何将值列表作为单个参数列表传递给xargs?

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

ls | tail -10

输出

a 
b 
c 
d 

,但我想它管的命令将收到名单如下:

command a b c d

我米猜xargs是这项工作的最佳工具,但我对任何事情都是开放的。记得越好越简单。

+0

随着'命令AB c d',列表不是一个参数,而是四个参数。可能你忘了写_list_。 – Armali

+0

已更正,谢谢 – Ovesh

回答

1

只是

ls|xargs command 

会做。当然,如果列表没有超出命令行长度限制,

command `ls` 

也足够了。

+0

如果OP真的希望将文件名作为单个参数加入,则这是不正确的。 –

+0

如果您阅读他的问题的标题和更正的问题,您会看到情况并非如此。 – Armali

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 
2

只需使用报价和变量扩展:

command "$(ls | tail)" 

测试(command):

#!/bin/bash 
echo $1 

输出:

a b c d 
相关问题