하위 디렉터리 이름을 읽고 디렉터리 이름을 기준으로 하위 디렉터리로 분할

하위 디렉터리 이름을 읽고 디렉터리 이름을 기준으로 하위 디렉터리로 분할

이것은 정말 간단할 수도 있지만, 나는 하루의 대부분을 이 일을 하면서 보냅니다.

질문: 응용프로그램에 여러 개의 폴더가 있는데 이를 하위 폴더에 넣어야 합니다. 현재 이 작업을 수동으로 수행하고 있으며 상황이 어떻게 진행되고 있는지에 대한 좋은 시각적 표시기이기 때문에 구분 기호를 사용하겠습니다.

예: 디렉터리 이름:category---subcat---page

원하는 결과:

  • 범주/
    • /자자/
      • /페이지/

계층 구조의 마지막 디렉터리는 해당 폴더의 내용이 있는 디렉터리입니다. 따라서 단지 구분 기호일 경우에는 ---한 디렉터리 깊이로만 이동합니다. 그렇다면 ---...---두 수준 깊이로 진행됩니다.

편집하다

지금까지 나의 시도는 미약합니다.

#!/bin/bash

IFS='---'
line="category---subcat---page"

dir=($line)

mkdir ${dir[0]}

답변1

편집: 원래 답변이 적용되지 않았기 때문에 약간 다른 답변을 찾기 위해 다시 작성했습니다.

Bash는 변수 값을 확장할 때 문자열 대체를 수행할 수 있습니다. 그것을 사용해 보자:

line='category---subcat---page'
mkdir -p "${line//---//}"

이 표현식은 문자열의 모든 인스턴스를 찾아 //---//변수가 확장될 때 ---이를 문자열로 바꿉니다 . (표현식은 첫 번째 인스턴스만 대체합니다)/$line/---//

이는 디렉토리 트리로 생성될 mkdir -p디렉토리 경로 string 을 제공합니다.category/subcat/page

category/
         subcat/
                page/

관련 정보