如何将 mkdir 与 xargs 一起使用

How to use mkdir with xargs

我是 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

求助.. 谢谢

你的问题是你正在使用 -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 直接针对这个特殊情况展开。