我知道我可以使用xargs
来获取文件列表并为每个文件运行一次命令。如何将值列表作为单个参数列表传递给xargs?
我想要做的是将文件列表作为单个参数列表传递给命令。例如:
ls | tail -10
输出
a
b
c
d
,但我想它管的命令将收到名单如下:
command a b c d
我米猜xargs
是这项工作的最佳工具,但我对任何事情都是开放的。记得越好越简单。
我知道我可以使用xargs
来获取文件列表并为每个文件运行一次命令。如何将值列表作为单个参数列表传递给xargs?
我想要做的是将文件列表作为单个参数列表传递给命令。例如:
ls | tail -10
输出
a
b
c
d
,但我想它管的命令将收到名单如下:
command a b c d
我米猜xargs
是这项工作的最佳工具,但我对任何事情都是开放的。记得越好越简单。
只是
ls|xargs command
会做。当然,如果列表没有超出命令行长度限制,
command `ls`
也足够了。
如果OP真的希望将文件名作为单个参数加入,则这是不正确的。 –
如果您阅读他的问题的标题和更正的问题,您会看到情况并非如此。 – Armali
你可以尝试:
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
只需使用报价和变量扩展:
command "$(ls | tail)"
测试(command
):
#!/bin/bash
echo $1
输出:
a b c d
随着'命令AB c d',列表不是一个参数,而是四个参数。可能你忘了写_list_。 – Armali
已更正,谢谢 – Ovesh