bash script2021. 3. 30. 17:24

 

반달가면 이글루에서 백업 - bahndal.egloos.com/509465

 

파일은 그대로 놔두고 특정 디렉토리 하위에 있는 디렉토리 구조를 다른 디렉토리 하위에 복사하는 방법이다. find 명령을 사용해서 복사할 수 있다. (find 명령에 대한 소개는 이전 게시물을 참고하자. 여기로)

 

~/temp1/src 하위의 디렉토리 구조를 ~/temp2/dst 디렉토리로 복사하는 경우를 생각해 보자. 복사하고자 하는 원래 디렉토리로 간 후에 find 명령을 이용해서 디렉토리 구조를 출력하도록 한 후, -exec 옵션을 통해서 해당 출력물을 mkdir 명령의 인자(argument)로 대응시킨다.

cd ~/temp1/src
find ./ -type d -exec mkdir -p ~/temp2/dst/{} \;

find ./ -type d 명령에 의해 하위 디렉토리명을 찾은 후, 해당 결과에 대하여 -exec 옵션을 통해 mkdir 명령을 실행한다. mkdir 명령에서 {} 이 부분에 find의 결과가 인자로 들어가게 된다. -exec 옵션에 지정된 명령의 종료 지점을 표시하기 위해 세미콜론(;)을 사용하는데, 셸(shell)에서 명령어 구분자로 해석하는 것을 방지하기 위해 이스케이프(escape) 캐럭터인 역슬래시(\)로 보호해 준다.

참고로 mkdir 명령에 -p 옵션을 주면 필요할 경우 상위 디렉토리도 생성하라는 의미가 된다. 아래의 예시를 보자.

# ~/dir1 디렉토리가 없는 상태에서 실행할 경우 오류 발생
mkdir ~/dir1/dir2

# ~/dir1 디렉토리가 없다면 먼저 ~/dir1 디렉토리를 만든 후 dir2 디렉토리 생성(-p 옵션)
mkdir -p ~/dir1/dir2

 

728x90
Posted by 반달가면