这个 xargs 命令有什么问题?

这个 xargs 命令有什么问题?

考虑输出:

% { echo one; echo two; echo three; } | xargs -I{} -L1 echo test-{} 
test-{} one
test-{} two
test-{} three

为什么没有{}按照手册页(以及我的记忆)进行替换?

如何更改命令行以获取test-one, test-two,test-three行作为输出?

答案1

去除-L 1;它是由-I(如手册页所述)暗示的,但在之后指定时它会覆盖它。

答案2

它无需“-L1”即可工作,因为它是隐式设置的。

{ echo one; echo two; echo three; } | xargs -I{} echo test-{}
test-one
test-two
test-three

答案3

如果您有 GNU Parallelhttp://www.gnu.org/software/parallel/安装后你可以这样做:

{ echo one; echo two; echo three; } | parallel echo test-{}

您可以简单地通过以下方式安装 GNU Parallel:

wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem

观看 GNU Parallel 的介绍视频以了解更多信息: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

相关内容