【问题标题】:How to use mkdir with xargs如何将 mkdir 与 xargs 一起使用
【发布时间】:2016-03-18 11:57:50
【问题描述】:

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

【问题讨论】:

  • 不要使用xargs,使用mkdir mm{1..11}
  • tks!!我只是使用 for........ bw 想知道 xargs 可以做什么,因为 sed 以这种方式工作,但 mkdir 不工作..

标签: bash mkdir xargs


【解决方案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 直接针对这种特殊情况进行扩展。

【讨论】:

  • 我认为 -n 标志有助于添加下一行
猜你喜欢
  • 2016-12-27
  • 2019-04-12
  • 1970-01-01
  • 2015-07-11
  • 2010-12-08
  • 1970-01-01
  • 1970-01-01
  • 2018-07-30
相关资源
最近更新 更多