4

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

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

ls | tail -10

输出

a
b
c
d

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

command a b c d

我猜xargs这是完成这项工作的最佳工具,但我对任何事情都持开放态度。越简单记忆越好。

4

3 回答 3

3

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

command "$(ls | tail)"

测试 ( command):

#!/bin/bash
echo $1

输出:

 a b c d
于 2013-07-03T08:19:09.737 回答
1

只是

ls|xargs command

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

command `ls`

也足够了。

于 2013-07-03T08:05:39.017 回答
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
于 2013-07-03T08:11:54.390 回答