기본 폴더 하위 폴더 및 파일 이름을 만드는 방법

기본 폴더 하위 폴더 및 파일 이름을 만드는 방법

기본 폴더 하위 폴더 하위 폴더를 만들고 해당 하위 폴더에 파일을 만들고 싶은 시나리오가 있습니다.

내 텍스트 파일에는 다음 형식이 포함되어 있습니다.

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.
  • 와 사이의 문자는 &&(어떤 이유로든) 생성될 수 없는 디렉토리에 파일을 생성하려고 시도하지 않도록 보장합니다.mkdirtouchmkdir

관련 정보