创建多个文件夹和子文件夹

时间:2018-02-09 13:47:08

标签: linux shell

我需要在每个目录下创建多个目录,然后创建子目录。我能够编写用于创建目录的脚本,但是如何为子目录实现此目的。 文件夹结构:

-User1
   -FolderA
       -FolderA1
   -FolderB
   -FolderC
       -FolderC1
       -FolderC2
    -FolderD
-User2
   -FolderA
       -FolderA1
   -FolderB
   -FolderC
       -FolderC1
       -FolderC2
    -FolderD
-User3
   -FolderA
       -FolderA1
   -FolderB
   -FolderC
       -FolderC1
       -FolderC2
    -FolderD

我可以使用PowerShell通过CSV文件在Windows中实现此目的。不知道如何在linux中获取它。

2 个答案:

答案 0 :(得分:2)

你可以这样做:

$ mkdir -p foo/{bar,baz}
$ find foo/
foo/
foo/bar
foo/baz

或者:

$ mkdir -p foo/bar foo/baz
$ find foo/
foo/
foo/bar
foo/baz

答案 1 :(得分:0)

Bash不太适合处理结构化数据。使用像Perl这样的不同工具通常会更好。以下代码假定您仅将目录缩进一个空格。这简化了计算。如果要从stdin传递目录,请将<DATA>替换为<>

#! /usr/bin/perl
use strict;
use warnings;

my @p = ();
while (<DATA>) {
  s/\n\r?//;
  if (/^(\s*)(.+)$/) {
    my $l = length $1;
    @p = (@p)[0 .. $l];
    $p[$l] = $2;
    my $d = (join '/', @p);
    `mkdir $d`;
  }
}

__DATA__
User1
 FolderA
  FolderA1
 FolderB
 FolderC
  FolderC1
  FolderC2
 FolderD
User2
 FolderA
  FolderA1
 FolderB
 FolderC
  FolderC1
  FolderC2
 FolderD
User3
 FolderA
  FolderA1
 FolderB
 FolderC
  FolderC1
  FolderC2
 FolderD