2013-06-09 3 views
1

나는 많은 하위 폴더를 포함하는 폴더 (ORIG)를 가지고있다 (각 하위 폴더에도 하위 폴더가 포함되어있다). 난 extention * .fig로 모든 파일을 새로운 폴더 (DEST)에 똑같은 하위 폴더 구조로 복사하려고합니다. 하위 폴더가 너무 많으므로 수동으로 하위 폴더를 만드는 데 너무 오래 걸립니다. 그래서 나는 프로그램으로 그것을 할 방법을 찾고 있습니다. 나는 재귀 적으로 모든 파일을 나열 dirr라는 코드를 찾아 newfullpaths 몇 가지 경로가 포함되어 있기 때문에 나는한 폴더에서 대상으로 모든 파일을 복사 matlab에

clear all; 
clc; 

oldpath = 'd:\myfig'; 
newpath = 'c:\matlabdata\plotting\figs'; 
[files, bytes, names] = dirr([oldpath ], 'name'); 
oldfullpaths = names(:); 
newfullpaths = strrep(oldfullpaths, oldpath , newpath); 

copyfile(oldfullpaths, newfullpaths) 

이 코드는 작동하지 않습니다에 따라 모든 * .fig 파일을 검색하기 위해 단순히 코드를 작성하려고하는 존재하지 않습니다. 한 곳에서 대상으로 파일을 복사하는 방법은 없으며 대상 폴더가없는 경우 먼저 만듭니다.

+0

docs에서'copyfile()'까지 : [새로운 존재하지 않는 폴더로 파일 복사] (http://www.mathworks.co.uk/help/matlab/ref/copyfile.html#btm0bv4-4) 자동으로 작동합니다. 어떤 오류 메시지가 나타 납니까? – Oleg

+1

답장을 보내 주셔서 감사합니다. 그러나 여기에서는 copyfile이 작동하지 않습니다. '경로를 저장할 수 없습니다'오류가 발생합니다. 나는 간단한 테스트 카피 파일 ('c : \ abc \ a.fig', 'd : \ efg \ a.fig')을 실행한다; d : \ efg가 존재하지 않고 copyfile이 오류로 종료됩니다. 하지만 수동으로 d : \ efg를 수동으로 생성하면 에러가 발생하지 않습니다. – user1285419

+0

'copyfile ('c : \ abc \ a.fig', 'd : \ efg \')'을 시도해보십시오. 작동하지 않는 경우 가지고있는 MATLAB 버전을 확인하는 데 도움이 될 수 있습니다. – Oleg

답변

0

당신은 단지 쉘 이스케이프를 사용할 수 있습니다 [old dir] 이전 폴더의 경로이며, [new dir]이 존재하거나 생성됩니다 중 하나를 새 폴더의 경로입니다

!cp -r [old dir] [new dir] 

.

편집 : Windows에서, 당신은으로 dos 명령을 사용할 수 있습니다 :

dos('copy [old dir] [new dir]') 

는 미안,이 테스트 드릴 수 없습니다.

+0

Windows에서 작동합니까? 묻는 사람은 Windows 또는 Linux를 사용하는 것 같습니다. – horchler

+0

아, 그건 좋은 질문이고 내가 시험 할 수없는 질문입니다. 죄송합니다. 'dos' 명령어 [여기 문서] (http://www.mathworks.com/help/matlab/ref/dos.html)를 사용해보십시오. – Engineero

+0

내 모든 경우에 위의 모든 것이 작동하지 않습니다. 테스트를 위해 윈도우를 사용하고 있지만 리눅스가 설치된 다른 머신에서 실행해야 할 수도 있습니다. – user1285419

1

마침내 이렇게 할 수있는 방법을 찾았습니다. 먼저 모든 파일을 나열하고, 각 파일을 나열하고, 경로를 추출하고, oldpath를 새 경로로 바꾸고, 새 경로가 없으면 mkdir 먼저 이전 파일을 한 번에 하나씩 새 파일로 복사합니다. 그것은 빠르지는 않지만 최소한 일합니다. 누구든지 더 좋은 아이디어가 있다면 알려주십시오. 감사.

관련 문제