gpt4 book ai didi

xargs - 如何使 xargs 使用 -n 附加尾随参数?

转载 作者:行者123 更新时间:2023-12-04 11:19:05 27 4
gpt4 key购买 nike

xargs 擅长插入初始参数:

seq 0 10 | xargs -n 3 echo foo

产生这个输出:
foo 0 1 2
foo 3 4 5
foo 6 7 8
foo 9 10

当我还想要尾随参数时怎么办?
也就是说,什么命令:
seq 0 10 | xargs -n 3 <WHAT GOES HERE?>

将产生以下所需的输出:
foo 0 1 2 bar
foo 3 4 5 bar
foo 6 7 8 bar
foo 9 10 bar

我尝试了以下方法:
seq 0 10 | xargs -n 3 -I {} echo foo {} bar

这几乎是正确的,除了它显然强制每个命令行 1 个项目,这不是我想要的:
foo 0 bar
foo 1 bar
foo 2 bar
foo 3 bar
foo 4 bar
foo 5 bar
foo 6 bar
foo 7 bar
foo 8 bar
foo 9 bar
foo 10 bar

最佳答案

使用 xargs 的 -i 参数,例如:

ls -1 | xargs -t -i echo "Found {} file"

请注意,-t 仅用于显示将要发出的命令。实时运行时,不要使用 -t 参数。
{}由实际参数代替。请注意,这确实意味着每个命令每个文件只运行一次。不是作为一组文件。如果需要使用不同的替换字符串,请在 -i 后指定
ls -1 | xargs -t -i[] xargs echo "Found []{} file"

会保留 {}在出现 [] 时现在被替换的文件名之后

达到预期的输出

创建一个名为 runme.sh 的脚本文件
#!/bin/sh
echo "foo $@ bar"

确保 chmod +X 然后使用
seq 0 10 | xargs -n 3 ./runme.sh

这会产生
foo tests tree.php user_admin.php bar
foo user_domains.php user_group_admin.php utilities.php bar
foo vdef.php bar

关于xargs - 如何使 xargs 使用 -n 附加尾随参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47575270/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com