programing

Bash를 사용하여 존재하지 않는 서브디렉토리를 재귀적으로 작성하려면 어떻게 해야 합니다.

easyjava 2023. 4. 9. 22:32
반응형

Bash를 사용하여 존재하지 않는 서브디렉토리를 재귀적으로 작성하려면 어떻게 해야 합니다.

데이터베이스를 nice/neat 디렉토리 구조로 덤프하는 퀵백업 스크립트를 작성하고 있는데, 작성하기 전에 디렉토리가 존재하는지 테스트해야 한다는 것을 깨달았습니다.제가 가지고 있는 코드가 작동하는데, 더 나은 방법이 있을까요?

[ -d "$BACKUP_DIR" ] || mkdir "$BACKUP_DIR"
[ -d "$BACKUP_DIR/$client" ] || mkdir "$BACKUP_DIR/$client"
[ -d "$BACKUP_DIR/$client/$year" ] || mkdir "$BACKUP_DIR/$client/$year"
[ -d "$BACKUP_DIR/$client/$year/$month" ] || mkdir "$BACKUP_DIR/$client/$year/$month"
[ -d "$BACKUP_DIR/$client/$year/$month/$day" ] || mkdir "$BACKUP_DIR/$client/$year/$month/$day"

를 사용할 수 있습니다.-p파라미터는 다음과 같이 기술되어 있습니다.

-p, --개요

오류가 없는 경우 필요에 따라 상위 디렉토리를 만듭니다.

그래서:

mkdir -p "$BACKUP_DIR/$client/$year/$month/$day"
mkdir -p "$BACKUP_DIR/$client/$year/$month/$day"

기존의 답변이 확실히 목적을 해결하지만, 두 개의 다른 하위 디렉토리로 중첩된 디렉토리 구조를 복제하려는 경우 다음과 같이 할 수 있습니다.

mkdir -p {main,test}/{resources,scala/com/company}

호출된 디렉토리 아래에 다음과 같은 디렉토리 구조가 생성됩니다.

├── main
│   ├── resources
│   └── scala
│       └── com
│           └── company
└── test
    ├── resources
    └── scala
        └── com
            └── company

예는 SBT 디렉토리 구조를 작성하기 위해 이 링크에서 가져온 것입니다.

mkdir -p newDir/subdir{1..8}
ls newDir/
subdir1 subdir2 subdir3 subdir4 subdir5 subdir6 subdir7 subdir8

언급URL : https://stackoverflow.com/questions/1731767/how-can-i-create-nonexistent-subdirectories-recursively-using-bash

반응형