我知道我可以使用xargs
获取文件列表,并为每个文件运行一次命令。
我想要做的是将文件列表作为单个参数列表传递给命令。例如:
ls | tail -10
输出
a
b
c
d
但是我想将它传递给一个命令,它会收到这样的列表:
command a b c d
我猜xargs
是这项工作的最佳工具,但我对任何事情都持开放态度。更容易记住更好。
答案 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