我有一个命令,试图为文件生成UUID:
find -printf "%P\n"|sort|xargs -L 1 echo $(uuid)
但实际上,xargs
只会执行一次 $(uuid)
子进程:
8aa9e7cc-d3b2-11e4-83a6-1ff1acc22a7e file1
8aa9e7cc-d3b2-11e4-83a6-1ff1acc22a7e file2
8aa9e7cc-d3b2-11e4-83a6-1ff1acc22a7e file3
有没有一行命令(不是函数)可以让xargs
在每个输入上执行子shell命令?
-n 1
实际上会按任何空格分割,无论是行内还是行外,因此带有嵌入式空格的路径将导致命令中断;-L 1
更接近意图,因为它执行逐行处理,但仍然对每行应用单词拆分,因此可能会向echo
传递多个参数(这可能会导致问题)。稳健的方法是使用-I
,就像被接受的答案一样。 - mklement0