带有来自echo和-I {}的args的xargs似乎不起作用......?

时间:2014-01-02 15:04:46

标签: xargs

我尝试同时使用xargs与-n 1-I {},但没有成功...

假设您想将1.txt 2.txt 3.txt移到其他名称:

for i in 1 2 3; do
    mv ${i}.txt ${i}_ren.txt
done

现在我尝试通过1 2 3xargs值传递给echo,但似乎不起作用。 我用:

echo 1 2 3 | xargs -n 1 -I {} mv {}.txt {}_ren.txt

我做错了什么?

1 个答案:

答案 0 :(得分:1)

似乎无法合并xargs选项-n-I

参见例如https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=31858&gt

但是,可以只使用一个管道而不是

echo 2 3 4 | xargs -n 1 | xargs -I {} mv {}.txt {}_ren.txt

达到同样的效果。

为此,必须禁用echo输出末尾的换行符(取决于系统); 使用空格作为xargs的分隔符:

echo -n 2 3 4 | xargs -d " " -I {} mv {}.txt {}_ren.txt

不幸的是,这种解决方案可能并没有那么复杂。