2012-04-16 2 views
5

헤더 파일 (.h) 및 기타 .o 및 .c 파일이 많은 디렉터리가 있습니다. 및 기타 파일. 이 디렉토리에는 많은 중첩 된 디렉토리가 있습니다. 헤더 파일 만 새 디렉토리의 동일한 구조를 유지하는 별도의 디렉토리에 복사하려고합니다.새 폴더에 복사 한 후 동일한 계층 구조를 유지하면서 다른 중첩 된 디렉터리의 헤더 파일 만 복사 할 수 있습니다.

cp -rf oldDirectory newDirectory은 모든 파일을 복사합니다. 헤더 파일 만 복사하고 싶습니다.

+0

가능한 복제 (HTTP [유닉스/리눅스에서 특정 파일의 재귀 사본?] //stackoverflow.com/questions/9622883/recursive-copy-of-specific-files-in-unix-linux) – iammilind

답변

7
(cd src && find . -name '*.h' -print | tar --create --files-from -) | (cd dst && tar xvfp -) 

당신은 CPIO와 비슷한 작업을 수행 할 수 있습니다 (실제 경로에 따라) 같은, 그러나 그것은이다 나중에 약간의 mv'ing이 필요할 것 같다. 많은 양의 데이터를 가지고 있고 공유 할 필요가없는 (또는 필요하지는 않은) 분이라면 훨씬 빨라질 수 있습니다. dst가 src를 가질 필요가 있다면 혼란스러워진다. 단지 부작용이 아니라면 혼란 스럽다.

  1. src -name '* .h'-print | cpio -pdlv dst
  2. mv dst/src/* dst /.
  3. RMDIR의 DST/src에
+0

좋은 사운드 ... cpio가 내가 esp를 찾고 있다고 생각합니다. -d 옵션 – avimonk

1
cp -rf oldDirectory/*.h newDirectory 

아니면 그냥 하드 링크 대신에 복사의 파일을 원하는 경우

find oldDirectory -type f -name "*.h" -print0 | xargs -file cp file newDirectory 
+2

첫 번째 솔루션은 깊이 1에서만 .h 파일을 복사합니다. 깊이 2와 3에 헤더 파일이 있으면 어떻게됩니까? – avimonk

1

이 하나가 나를 위해 일한 :

rsync -avm --include='*.h' -f 'hide,! */' . /destination_dir 

here에서

관련 문제