2017-02-23 10 views
0

유닉스에 있음.패턴이있는 하위 폴더에서 하위 폴더를 유지하는 새 대상에 unix cp 파일

이 함께
/to/dir1name/a.pattern.b 
/to/dir1name/c.pattern.d 
/to/dir2name/e.pattern.f 
/to/dir2name/g.pattern.h 

뭔가가 유지되지 않습니다

/from/dir1name/a.pattern.b 
/from/dir1name/c.pattern.d 
/from/dir2name/e.pattern.f 
/from/dir2name/g.pattern.h 

가에 복사해야합니다 어떻게 하위 폴더 구조를 유지하는 새로운 위치에 특정 패턴 ('패턴')로 파일을 복사 할 수 있습니다 하위 폴더 구조 :

cp /from/*dir/*pattern* /to/ 

내가 디렉토리 이름을 파악하기 위해 (psuodocode를) 루프가 필요하십니까 :

for d in from/dir*; do cp "from/$d/*pattern*" "to/$d/"; done 

이전에 물어 본 적이 있지만 아직 찾지 못했습니다.

+0

는'exec' 기능과 함께'find' 유틸리티를 살펴 보자. – arkascha

+0

나는이 감사를 알고있다. 그러나 나는 여전히 폴더 구조를 보존 할 수 없다. 예 : find/from/* dir/-type f -iregex "* pattern *"-exec cp {}/to / – user3375672

답변

1

GNU cp에는 유용 ​​할 수있는 --parents 옵션이 있습니다. cd /from ; cp --parents dir*/*pattern* /to/

당신은 그렇게 경로의 부분은 당신이가 CP에 대한 소스 인수에 나타나지 않는 복제하지 않으 cd해야합니다.

전통적인 유닉스 CP에는 해당 기능이 없습니다. 당신은 당신의 자신의 루프를 작성해야하고, 중간 수준 mkdir 명령을 포함, 또는 속임수와 tar를 사용합니다 :

(cd /from ; tar cf - dir*/*pattern*) | (cd /to ; tar xvf -)