【问题标题】:How to create a parent directory with multiple subdirectories which has nested subdirectories within the respective subdirectories如何创建具有多个子目录的父目录,这些子目录在各个子目录中都有嵌套的子目录
【发布时间】:2022-07-02 05:00:01
【问题描述】:

我是 shell 脚本的新手。我正在尝试创建一个名为 Analysis 的主文件夹。在里面分析文件夹我想命名四个子文件夹,苯酚1,PhenV2,HypV1, 和HypV2.然后我想让这四个子文件夹中的每一个都有另外两个名为基因变体并且在每个基因变体文件夹有两个命名的文件夹CNVSNV。目录结构如下图所示。这是我尝试过的

mkdir -p Analysis/PhenV1/{Genes/{CNV,SNV},Variants/{CNV,SNV},PhenV2/{Genes/{CNV,SNV},Variants/{CNV,SNV},HypV1/{Genes/{CNV,SNV},Variants/{CNV,SNV},HypV2/{Genes/{CNV,SNV},Variants/{CNV,SNV}}

此代码仅创建父文件夹 Analysis 和子目录 PhenV1 和 {Genes\'\'m

  • 您显示的树与您尝试的命令不匹配:在您的命令中,您有 CNVSNVSNCMTVT 叶子,而您的树只有 CNVSNV。请编辑您的问题。
  • 关于操作系统、它们的实用程序、网络和硬件的问题,不在此处讨论。 What topics can I ask about here?。请删除此内容并在Unix & Linux Stack Exchangesuperuser.com 上询问
  • @rob 这是关于bash 大括号扩展的问题,而不是操作系统。恕我直言,这完全符合主题。您可能会建议删除无用的标签,但只要存在 bashtag,这就是 bash 编程问题。
  • @RenaudPacalet 感谢您指出这一点。命令已编辑

标签: linux bash directory subdirectory mkdir


【解决方案1】:
mkdir -p Analysis/{PhenV1,Phenv2,HypV1,HypV2}/{Genes,Variants}/{CNV,SNV}

创建:

$ tree
.
└── Analysis
    ├── HypV1
    │   ├── Genes
    │   │   ├── CNV
    │   │   └── SNV
    │   └── Variants
    │       ├── CNV
    │       └── SNV
    ├── HypV2
    │   ├── Genes
    │   │   ├── CNV
    │   │   └── SNV
    │   └── Variants
    │       ├── CNV
    │       └── SNV
    ├── PhenV1
    │   ├── Genes
    │   │   ├── CNV
    │   │   └── SNV
    │   └── Variants
    │       ├── CNV
    │       └── SNV
    └── Phenv2
        ├── Genes
        │   ├── CNV
        │   └── SNV
        └── Variants
            ├── CNV
            └── SNV

29 directories, 0 files

【讨论】:

  • 谢谢,这个命令可以毫不费力地工作。这比尝试跟上添加括号要容易得多
  • @geneteics_diva 太好了。如果答案有效,您可以接受(如果您愿意)。
【解决方案2】:

您的支架没有正确平衡。尝试:

Analysis/{PhenV1/{Genes/{CNV,SNV},Variants/{CNV,SNV}},PhenV2/{Genes/{CNV,SNV},Variants/{CNV,SNV}},HypV1/{Genes/{CNV,SN},Variants/{CMC,VT}},HypV2/{Genes/{CNV,SNV},Variants/{CNV,SNV}}}

可以稍微简化一下:

Analysis/{{PhenV1,PhenV2,HypV2}/{Genes,Variants}/{CNV,SNV},HypV1/{Genes/{CNV,SN},Variants/{CMC,VT}}}

【讨论】:

  • 谢谢您的回答。一旦我开始逐步执​​行命令,我认为这是一个不平衡的括号问题。您的答案的第一个版本有效,但简化版本似乎又是不平衡括号的问题。尽管如此,我现在知道要注意平衡我的括号。对我来说很棒的学习课:-)
  • 奇怪的。我刚刚用printf '%s\n' Analysis/{{PhenV1,PhenV2,HypV2}/{Genes,Variants}/{CNV,SNV},HypV1/{Genes/{CNV,SN},Variants/{CMC,VT}}} 进行了测试,它产生了你所期望的结果。您确定您正确复制粘贴了所有内容吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-20
  • 2010-10-20
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
相关资源
最近更新 更多