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개의 항목이 아닌 첫 번째 항목 이후의 하나 이상의 항목에 적용됩니다.

답변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}

관련 정보