我有一个试图为文件生成uuid的命令:
find -printf "%P\n"|sort|xargs -L 1 echo $(uuid)
但在结果中,
xargs
只执行一次$(uuid)
子shell:8aa9e7cc-d3b2-11e4-83a6-1ff1acc22a7e file1
8aa9e7cc-d3b2-11e4-83a6-1ff1acc22a7e file2
8aa9e7cc-d3b2-11e4-83a6-1ff1acc22a7e file3
是否有一个行程序(即不是函数)来获取
xargs
对每个输入执行一个subshell命令? 最佳答案
这是因为$(uuid)
在当前shell中被展开。可以显式调用shell:
find -printf "%P\n"| sort | xargs -I '{}' bash -c 'echo $(uuid) {}'
顺便说一下,我将使用以下命令:
find -exec bash -c 'echo "$(uuid) ${1#./}"' -- '{}' \;
没有
xargs
。关于bash - xargs可以为每个参数执行一个subshell命令吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29278466/