예외적으로 한 디렉토리에서 다른 디렉토리로 모든 파일을 반복적으로 복사


8

한 디렉토리에서 다른 디렉토리로 두 디렉토리를 제외한 모든 파일을 어떻게 복사해야합니까? 예를 들어 :

cp -R test /www/test2 would copy all

그러나 log 및 logs라는 2 개의 폴더를 제외하고 싶습니다.

나는 다음과 같은 것을 시도했다 :

find ~test -not -name logs,log |  cp -R test /www/test2 

그러나 구문을 도와 줄 수 있습니까?

답변:


10

rsync를 사용하십시오.

rsync -a --exclude=logs --exclude=log from/ to/

rynsc는 나를 위해 멋지게 일했다!
Micheal

rsync는 이제 나의 새로운 친구입니다 :) 감사합니다, 설명은 깔끔합니다
Aleks

2

나는 당신이 다음과 같은 것을 찾고 있다고 생각합니다 :

find dir -type d ! \( -name 'log' -o -name 'logs' \) | xargs -I{} cp -R {} /www/test2/{}

@sputnick 내 변경 사항을 참조하십시오. emacs 정규식을 제공하는 경우 언제든지 알려주십시오.
Tim Pote

0

사용하는 경우 :

shopt -s extglob
cp -R test/!(log|logs) /www/test2

참조 http://wiki.bash-hackers.org/syntax/pattern를


구조가 다음과 같은 경우 어떻게됩니까 test/someotherdir/logs? 영업 이익은 말했다 적이 loglogs두 번째로 높은 디렉토리이었다.
Tim Pote

OP 명령 find ~test -not -name logs,log로그 를 다시 읽으면 로그가 하위 디렉토리 여야합니다.
Gilles Quenot

find모든 하위 디렉토리를 재귀 적으로 살펴 봅니다 . 파일 글 로빙이 수행되지 않습니다. 작업에 대한 답을 위해, log그리고 logs할 것이다 즉시 의 하위 디렉토리 test.
Tim Pote
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.