2013-07-03 59 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 
相關問題