it-swarm-ko.tech

숨겨진 디렉토리를 제외하고 재귀 적으로 복사

cp -rf *처럼 재귀 적으로 복사하지만 숨겨진 디렉토리 (.로 시작하는 디렉토리)와 그 내용은 제외하려면 어떻게해야합니까?

13
uray

모든 것을 복사 할 수 있습니다.

cp -rf 

그런 다음 대상에서 숨겨진 디렉토리를 삭제하십시오.

find -type d -name '.*' -and -not -name '.' -print0 | xargs -0 rm -rf

또는 고급 tar (예 : GNU tar))가있는 경우 tar를 사용하여 일부 패턴을 제외 할 수 있습니다. 그러나 숨겨진 디렉토리 만 제외 할 수는 없지만 숨겨진 파일.

예를 들면 다음과 같습니다.

tar --exclude=PATTERN -f - -c * | tar -C destination -f - -x

Btw, GNU tar에는 제외 스타일 옵션의 Zoo가 있습니다. 제가 가장 좋아하는 것은

--exclude-vcs
6
maxschlepzig

일부 파일을 제외하고 디렉토리 트리를 복사하는 좋은 옵션은 다음과 같습니다.

  • rsync : 이것은 기본적으로 cp와 수많은 배제 가능성입니다.

    rsync -a --exclude='.*' /source/ /destination
    
  • pax : 일부 제외 기능이 있으며 POSIX에 있으므로 모든 곳에서 사용할 수 있어야합니다 (일부 Linux 배포판은 어떤 이유로 기본 설치에 포함되지 않음).

    cd /source && mkdir -p /destination && \
    pax -rw -pp -s '!.*/\..*!!'  . /destination
    

cp 대신 --exclude=PATTERN와 함께 rsync를 사용할 수 있습니다.

8
xenoterracide