다음 데이터가 포함된 csv 또는 txt 파일로 변환한 Excel 파일이 있습니다.
ALFA ROMEO > 147 > Scheinwerferblenden
ALFA ROMEO > 156 > Scheinwerferblenden
ALFA ROMEO > 156 > Kühlergrill
AUDI > 80 B3 > Heckspoiler
.
.
등.
다음 구문을 사용하여 이 데이터를 기반으로 폴더와 하위 폴더를 만들어야 합니다.
├───ALFA ROMEO
│ ├───147
│ │ └───Scheinwerferblenden
│ └───156
│ ├───Scheinwerferblenden
│ └───Kühlergrill
│
└───AUDI
└───80 B3
└───Heckspoiler
mkdir -p bash 스크립팅을 시도했지만 성공하지 못했습니다.
답변1
귀하가 제공한 입력을 바탕으로 다음 명령을 사용하여 이 작업을 수행할 수 있습니다.
while read -r dir; do mkdir -p ./"$dir"; done< <(sed 's@ > @/@g' input)
현재 디렉터리가 아닌 경우 ./
디렉터리 트리를 시작하려는 디렉터리 경로를 대체할 수 있습니다.
sed
이는 입력 라인을 다음에서 변환하는 데 사용됩니다 .
ALFA ROMEO > 147 > Scheinwerferblenden
도착하다:
ALFA ROMEO/147/Scheinwerferblenden
mkdir -p
그런 다음 디렉터리 트리를 생성하는 while 루프 에 출력을 제공합니다 .
$ cat input
ALFA ROMEO > 147 > Scheinwerferblenden
ALFA ROMEO > 156 > Scheinwerferblenden
ALFA ROMEO > 156 > Kühlergrill
AUDI > 80 B3 > Heckspoiler
$ while read -r dir; do mkdir -p ./"$dir"; done< <(sed 's@ > @/@g' input)
$ tree
.
├── ALFA\ ROMEO
│ ├── 147
│ │ └── Scheinwerferblenden
│ └── 156
│ ├── K\303\274hlergrill
│ └── Scheinwerferblenden
├── AUDI
│ └── 80\ B3
│ └── Heckspoiler
└── input
9 directories, 1 file
답변2
귀하의 입력에 따라 이것을 시도해 보십시오(사용Bash 매개변수 확장):
while IFS=">" read -r c1 c2 c3; do
c2=${c2% }
mkdir -p "${c1% }/${c2# }/${c3# }"
done < file-or-input
산출:
$ tree AUDI ALFA\ ROMEO/
AUDI
└── 80 B3
└── Heckspoiler
ALFA ROMEO/
├── 147
│ └── Scheinwerferblenden
└── 156
├── Kühlergrill
└── Scheinwerferblenden
7 directories, 0 files