我尝试同时使用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 3
将xargs
值传递给echo
,但似乎不起作用。
我用:
echo 1 2 3 | xargs -n 1 -I {} mv {}.txt {}_ren.txt
我做错了什么?
答案 0 :(得分:1)
似乎无法合并xargs选项-n
和-I
,
参见例如https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=31858>
但是,可以只使用一个管道而不是
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
不幸的是,这种解决方案可能并没有那么复杂。