본문 바로가기

findcp 명령어를 조합해서 특정 폴더를 제외하고 원본 디렉터리 구조의 일부만 유지하려면 --parents 옵션 대신 rsync 또는 find와 함께 상대 경로를 활용해야 합니다.


방법 1: rsync 사용

rsync는 기본적으로 디렉터리 구조를 유지하며 복사를 수행하므로 가장 간단한 방법입니다.

rsync -av --exclude='csrc' --exclude='simv.daidir' /home/RTL/ ./RTL/
  • 옵션 설명:
    • -a: 원본 파일의 권한과 시간 정보를 유지.
    • -v: 진행 상황을 출력.
    • --exclude='csrc': 이름이 csrc인 폴더 제외.
    • --exclude='simv.daidir': 이름이 simv.daidir인 폴더 제외.
    • /home/RTL/: 원본 디렉터리.
    • ./RTL/: 현재 경로에 RTL 디렉터리를 생성하며 복사.

방법 2: find와 상대 경로로 해결

find 명령어에서 상대 경로를 사용하여 불필요한 상위 디렉터리를 제거할 수 있습니다.

cd /home/RTL
find . -type d ! -name 'csrc' ! -name 'simv.daidir' -exec cp -r --parents {} /target/path/RTL/ \;
  • 작동 원리:
    • cd 명령어를 사용해 /home/RTL 디렉터리로 이동.
    • find .: 현재 디렉터리(.)부터 시작해 검색.
    • ! -name 'csrc': csrc 폴더 제외.
    • ! -name 'simv.daidir': simv.daidir 폴더 제외.
    • --parents: 디렉터리 구조를 복사하되, 상위 디렉터리는 포함되지 않음.
    • /target/path/RTL/: 결과가 저장될 대상 경로.

방법 3: findtar로 복사

findtar을 조합해 특정 폴더를 제외한 압축 후 복사도 가능합니다.

cd /home/RTL
tar --exclude='./csrc' --exclude='./simv.daidir' -cf - . | (cd /target/path/RTL && tar -xf -)
  • 작동 원리:
    • tar --exclude: csrcsimv.daidir 폴더를 제외.
    • -cf -: 데이터를 표준 출력으로 보냄.
    • | (cd /target/path/RTL && tar -xf -): 대상 경로에서 압축 해제.

결론

  • 가장 간단한 방법은 rsync를 사용하는 것입니다.
  • find로 작업하려면 상대 경로를 사용해 복사해야 원하지 않는 경로가 포함되지 않습니다.

필요한 방식을 선택하여 사용하세요.😊

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.