【问题标题】:mkdir: omit leading pathname when creating multiple directories? [duplicate]mkdir:创建多个目录时省略前导路径名? [复制]
【发布时间】:2016-08-12 05:47:24
【问题描述】:

我确信这个问题已经在其他地方被问过,但我似乎无法以返回有用的 Google 结果的方式来表达它。

我正在创建十几个目录,它们都具有相同的根路径,我不想在其中添加cd 才能创建这些目录。当前的命令看起来像这样,很糟糕而且重复:

$ mkdir frontend/app/components/Home frontend/app/components/Profile \ 
  frontend/app/components/Post frontend/app/components/Comment

理想的语法应该是这样的:

$ mkdir frontend/app/components/{Home, Profile, Post, Comment}

我还没有找到类似的东西吗?我不想为了创建几个目录而运行for 循环。

【问题讨论】:

  • “重复”不正确。链接到的问题是关于mkdir -p,而这个问题不是(请参阅@anubhava 的答案中的cmets)。无论如何,有一个答案,OP很高兴,这是最重要的:-)。

标签: bash shell mkdir


【解决方案1】:

你的愿望被实现了:-)。

mkdir 不知道也不必知道,但是像 bashzsh 这样的 shell 可以理解语法 {...,...,...}

只需从“沿线”中删除空格即可:

mkdir frontend/app/components/{Home,Profile,Post,Comment}

shell 会将其扩展为

mkdir frontend/app/components/Home frontend/app/components/Profile frontend/app/components/Post frontend/app/components/Comment

由于它是由 shell 完成的,它适用于任何命令。

【讨论】:

  • 哈!看起来bash 知道它在做什么。这甚至适用于touch ``` touch app/components/{Home/index.js,ProfileShow/index.js,PostShow/index.js} ``
  • @samcorcos 在 shell 中进行这些类型的替换的全部意义在于它与 any 命令一致,因为它们只看到扩展的参数。
  • @barmar 很高兴知道。
【解决方案2】:

删除逗号周围的空格并使用-p 选项:

mkdir -p frontend/app/components/{Home,Profile,Post,Comment}

【讨论】:

  • 除非frontend/app/components 不存在,否则不需要-p 选项。
  • 是的,没错,但-p 也可以方便地抑制现有目录的错误。
  • 如果目录不应该存在,为什么要抑制错误。似乎这个选项与问题完全无关。
  • 是的,与问题无关。当说Post 已经存在但剩余的不存在时,我发现它很方便
猜你喜欢
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2020-06-02
  • 1970-01-01
  • 2016-11-19
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多