【发布时间】:2015-05-30 11:16:24
【问题描述】:
我有一个命令正在尝试为文件生成 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 在每个输入上执行子shell 命令?
【问题讨论】:
-
@TomFenech:
-n 1实际上会被任何空格分割,无论是否行内,因此该命令会中断带有嵌入空格的路径;-L 1更接近意图,因为它执行逐行处理,但仍将分词应用于每一行,因此可能多个参数传递给echoper输入行(可能会也可能不会导致问题)。稳健的方法是使用-I,如已接受的答案所示。