我是xargs的新手..
我想使用mkdir和xargs创建一些类似于:
的文件夹for i in {1..11};do mkdir mm$i;done
将创建文件夹mm1,mm2,mm2 ... mm11
我试过了:
echo {1..11}|xargs -p -n1 -I {} mkdir -p "mm{}"
然而它提示:
mkdir -p mm1 2 3 4 5 6 7 8 9 10 11 ?...
我也试过了:
echo {1..11}|xargs -p -n1 mkdir -p mm
提示:
mkdir -p mm 1 ?...n
mkdir -p mm 2 ?...n
mkdir -p mm 3 ?...n
mkdir -p mm 4 ?...n
mkdir -p mm 5 ?...n
mkdir -p mm 6 ?...n
mkdir -p mm 7 ?...n
mkdir -p mm 8 ?...n
mkdir -p mm 9 ?...n
mkdir -p mm 10 ?...n
mkdir -p mm 11 ?...n
mkdir -p mm ?...n
帮助.. TKS
答案 0 :(得分:1)
您的问题是您正在使用-I
标志,这需要这样做
参数由空行而不是空格分隔:
-I replace-str
Replace occurrences of replace-str in the initial-arguments with
names read from standard input. Also, unquoted blanks do not
terminate input items; instead the separator is the newline
character. Implies -x and -L 1.
一种解决方案是生成适当的输入:
echo {1..11} | tr ' ' '\n' | xargs ...
或者:
seq 11 | xargs ...
或者,正如@gniourf_gniourf在评论中建议的那样,只需使用shell 直接针对这种特殊情况进行扩展。