使用大括号(大括号)创建带有`mkdir -p`的文件夹结构


16

作为man mkdir国家

   -p, --parents
          no error if existing, make parent directories as needed

当我运行此命令时

mkdir -p work/{F1,F2,F3}/{temp1,temp2}

它创建了一个文件夹结构,这样的work父文件夹,然后F1F2F3子文件夹和temp1以及temp2在三个父文件夹的子文件夹F1F2F3

   work
     -F1
       -temp1
       -temp2
     -F2
       -temp1
       -temp2
     -F3
       -temp1
       -temp2

现在的问题是,我想创建temp1temp2文件夹只有在F1没有下F2F3,但我很困惑我如何能写命令做我想要的。


@Caleb:对不起,我不知道在同一时间我们俩都编辑,似乎修订合并不被SE实现: - /
斯特凡希门尼斯

@Stephane:不用担心。我进行了很多编辑,而且很少有两个主要编辑会像这样被破坏。感谢您的贡献!
卡莱布

Answers:



2

Brace Expansionbash手册的小节(man bash,按/开始搜索并搜索)中可以找到有关括号扩展的很好描述(包括示例Brace Expansion)。


谢谢您的回答,这使我找到了这份出色的指南!只是需要知道它叫做“括号扩展”,所以我知道该用什么Google了。linuxcommand.org/lc3_lts0080.php摘录:“也许最奇怪的扩展叫做花括号扩展。使用它,您可以从包含花括号的模式中创建多个文本字符串。这是一个示例: [me@linuxbox me]$ echo Front-{A,B,C}-Back Front-A-Back Front-B-Back Front-C-Back
Rock Lee

0
mkdir -p work/F{1..3} work/F1/temp{1,2}

首先创建work和的三个子目录,然后再创建较低级别的目录work/F1。易于阅读和理解。

或者,如果您绝对需要将所有内容组合成一个单个的怪物表达(绝对不需要这样做,因为它很难阅读和维护):

mkdir -p work/F{1/temp{1,2},2,3}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.