기본 폴더 하위 폴더 하위 폴더를 만들고 해당 하위 폴더에 파일을 만들고 싶은 시나리오가 있습니다.
내 텍스트 파일에는 다음 형식이 포함되어 있습니다.
ABC|A1|B1|A.txt
ABC|BB|CD|AF|JIDS.txt
ABC|BB|CDE|AFD|KL|JI.pdf
위 파일은 for 루프 형식으로 전달되어야 합니다. 첫 번째 레코드를 예로 들어보겠습니다.
ABC|A1|B1|A.txt
ABC -> 메인 폴더
A1 -> 하위 폴더
B1 -> 하위 폴더
A.txt -> 파일입니다
이 형식의 폴더가 생성되어야 합니다
ABC{Main folder}-->
|=> A1 {Subfolder}-->
|=> B1 {child folder}-->
|=>A.txt {file inside child folder}
답변1
각 행에 대해 |
모든 - 문자를 변경하여 /
경로 이름을 형성하고, 디렉토리를 생성하고, 경로 이름 끝에 파일을 생성합니다.
tr '|' '/' <file |
while IFS= read -r pathname; do
mkdir -p "$(dirname "$pathname")" &&
touch "$pathname"
done
결과:
$ tree ABC
ABC
|-- A1
| `-- B1
| `-- A.txt
`-- BB
|-- CD
| `-- AF
| `-- JIDS.txt
`-- CDE
`-- AFD
`-- KL
`-- JI.pdf
8 directories, 3 files
설명하다:
- 이 명령은 모든 - 문자를 다음과 유사한 것으로
tr
대체 하고 생성합니다.|
/
ABC/A1/B1/A.txt ABC/BB/CD/AF/JIDS.txt ABC/BB/CDE/AFD/KL/JI.pdf
- 위의 출력은
tr
루프를 통해 한 줄씩 읽혀집니다while
. 각 반복마다$pathname
이 출력의 행이 생성됩니다. - 각 반복에서
dirname "$pathname"
디렉터리 섹션을 반환합니다$pathname
(예:ABC/A1/B1
첫 번째 반복의 경우). 이는mkdir -p
누락되었을 수 있는 디렉터리에 대한 호출을 만드는 데 사용됩니다 . 중간 디렉토리를 생성-p
하는 옵션mkdir
. touch
$pathname
방금 생성된 디렉터리에서 참조하는 파일을 실제로 생성하는 데 사용됩니다mkdir
.- 와 사이의 문자는
&&
(어떤 이유로든) 생성될 수 없는 디렉토리에 파일을 생성하려고 시도하지 않도록 보장합니다.mkdir
touch
mkdir