find
와 cp
명령어를 조합해서 특정 폴더를 제외하고 원본 디렉터리 구조의 일부만 유지하려면 --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: find
와 tar
로 복사
find
와 tar
을 조합해 특정 폴더를 제외한 압축 후 복사도 가능합니다.
cd /home/RTL
tar --exclude='./csrc' --exclude='./simv.daidir' -cf - . | (cd /target/path/RTL && tar -xf -)
- 작동 원리:
tar --exclude
:csrc
및simv.daidir
폴더를 제외.-cf -
: 데이터를 표준 출력으로 보냄.| (cd /target/path/RTL && tar -xf -)
: 대상 경로에서 압축 해제.
결론
- 가장 간단한 방법은
rsync
를 사용하는 것입니다. find
로 작업하려면 상대 경로를 사용해 복사해야 원하지 않는 경로가 포함되지 않습니다.
필요한 방식을 선택하여 사용하세요.😊
'IT > 리눅스' 카테고리의 다른 글
현재 Shell 정보 확인하기 (0) | 2024.11.28 |
---|---|
vi - gf 로 파일열기시 환경변수 있어도 가능하게 (0) | 2024.08.28 |
윈도우에서 리눅스로 파일 이동시 ^M 문자 제거 방법 (0) | 2024.08.28 |
윈도우 WSL 에서 csh 사용하기 (0) | 2024.08.19 |
Vim - 파일 오픈 여러개 한 이후 화면 돌아가기 (0) | 2024.07.12 |