답변:
사용 rsync
:
rsync -avr --exclude='path1/to/exclude' --exclude='path2/to/exclude' source destination
사용합니다 source
과 source/
다르다. 후행 폴더의 내용을 복사하는 수단 슬래시 source
로를 destination
. 슬래시가 없으면 폴더 소스를에 복사하는 것 destination
입니다.
또는 제외 할 디렉토리 (또는 파일)가 많은 경우를 사용할 수 있습니다 --exclude-from=FILE
. 여기서 제외 할 FILE
파일 또는 디렉토리를 포함하는 파일 이름입니다.
--exclude
와 같은 와일드 카드를 포함 할 수도 있습니다. --exclude=*/.svn*
복사 한 곳 : https://stackoverflow.com/a/2194500/749232
cp
자체적 으로 사용하려는 경우 :
find . -type f -not -iname '*/not-from-here/*' -exec cp '{}' '/dest/{}' ';'
이것은 목표 디렉토리 구조가 소스와 동일하다고 가정합니다.
게임에 늦었지만 여기에는 일반 bash 및 cp를 사용하는 매우 다른 솔루션이 있습니다. 일부 파일은 무시하면서 전역 파일 사양을 사용할 수 있습니다.
디렉토리에 파일이 있다고 가정하십시오.
$ ls *
listed1 listed2 listed3 listed4 unlisted1 unlisted2 unlisted3
은 Using GLOBIGNORE의 변수를 :
$ export GLOBIGNORE='unlisted*'
$ ls *
listed1 listed2 listed3 listed4
또는 더 구체적인 제외 사항이있는 경우 :
$ export GLOBIGNORE='unlisted1:unlisted2'
$ ls *
listed1 listed2 listed3 listed4 unlisted3
또는 제외 어 일치 사용 :
$ ls !(unlisted*)
listed1 listed2 listed3 listed4
또한 여러 가지 일치하지 않는 패턴을 지원합니다.
$ ls !(unlisted1|unlisted2)
listed1 listed2 listed3 listed4 unlisted3
shopt -s extglob
, 또한 내보낼 필요가 없습니다GLOBIGNORE
: 현재 쉘의 동작을 수정해야하므로 대부분의 자식 프로그램은 신경 쓰지 않습니다.