Linuxでフォルダ構造を作成するには?

Linuxでフォルダ構造を作成するには?

以下のようにフォルダ構造を作成したいシナリオがあります。forこのようにしてこの構造を生成するループを作成するにはどうすればよいですか?

ABC [Parent folder]
   -> A1 [child folder]
   -> B1 [child folder]
   -> C1 [child folder]
   -> W1 [child folder]
   -> W2 [child folder]
   -> W3 [child folder]
   -> V1 [child folder]
   -> V2 [child folder]
   -> V3 [child folder]

次のようなファイルを渡します。

ABC|A1|B1|C1
ABC|W1|W2|W3
ABC|V1|V2|V3

メモ:

上記のファイルの内容を入力として受け取り、フォルダを作成する必要があります。

#ABC - MAIN PARENT DIRECTORY
#REMAINING AFTER ABC are child folders 

答え1

使用、標準方式:

while IFS='|' read -r maindir subdir1 subdir2 subdir3; do
    mkdir -p "$maindir/$subdir1" "$maindir/$subdir2" "$maindir/$subdir3"
done < file

出力

$ tree ABC
ABC
├── A1
├── B1
├── C1
├── V1
├── V2
├── V3
├── W1
├── W2
└── W3

答え2

入力ファイルを信頼している場合は、一連のシェルコマンドに変換して実行できます。

sed 's/^/mkdir -p /;sX|X/{X;s/|/,/g;s/$/}/' file | bash

このような線に変わります。

ABC|A1|B1|C1

入力する

mkdir -p ABC/{A1,B1,C1}

これは、3つの項目ではなく、最初の項目の後の1つ以上の項目に適用されます。

答え3

使用awk:

awk -F\| '{pdir=$1; for (i=2;i<=NF;i++) {sdir=pdir"/"$i; system("mkdir -p "sdir)}}' input

これはファイルの各行を繰り返し、pdir最初のフィールドに設定し、次に2から始めて各フィールドを繰り返しにsdir設定しますpdir/field。次に、system()関数を使用して呼び出し、mkdir必要-pに応じて親ディレクトリを作成するように選択します。ディレクトリがすでに存在する場合は警告しません。

答え4

一気に吐き出してください。

mkdir -p ABC/{A,B,C}1 ABC/{V,W}{1,2,3}

関連情報