2016-11-30 19 views
0

如何管理從多個目錄中的文件複製到MATLAB一個目標目錄,例如,如果目錄被組織如下一個目錄:從倍數目錄複製倍數文件到使用MATLAB

directory1 
sub-directory1 
    sub-sub-directory1-1 
     file1 
     file2 
    sub-sub-directory1-2 
     file4 
     thisis-my-file 
sub-directory2 
    sub-sub-directory2-1 
      file 
      myfile 
sub-sub-directory2-2 
      file-case1 

結果應該是這樣的:

target-directory 
    file1 
    file2 
    file4 
    thisis-my-file 
    file 
    myfile 
    file-case1 
+0

'rdir'是一個很好的交換文件,可以幫助你 - http://www.mathworks.com/matlabcentral/fileexchange/12180-fileseries-rename---renumber-fi les - 遞歸目錄 – Adiel

回答

1

這裏是許多可能的解決方案之一:

首先,讓你的directory1中的所有子文件夾:

% define the destination folder 
destinationFolder = 'c:\temp'; 
% genpath delivers all subfolders of the given directory 
directories = genpath('C:\directory1'); 
% the following regular expression gets all these subfolder, seperated by ';' 
directories = regexp([directories ';'],'(.*?);','tokens'); 

現在你可以使用dir -function一個for-loop內用於獲取在所有文件子文件夾:

for i=1:length(directories) 
    % you could use a wildcard, if you only want some 
    % specific files to be moved in to the target directory. 
    % (filesep is a built-in function!) 
    files = dir([directories{i}{1} filesep '*.*']); 

    % use a second loop for copying your files 
    for j=1:length(files) 
     % build the path and copy the file to the desired destination 
     copyfile([directories{i}{1} filesep files(j).name)], destinationFolder); 
    end; 
end; 
0

可以使用MATLAB命令用於複製文件是copyfile('source','destination')

copyfile('directory1/sub-directory1/sub-sub-directory1-1/file1.txt','target-directory') 
copyfile('directory1/sub-directory1/sub-sub-directory1-1/file2.txt','target-directory') 
copyfile('directory1/sub-directory1/sub-sub-directory1-2/file4.txt','target-directory') 
copyfile('directory1/sub-directory1/sub-sub-directory1-2/thisis-my-file.txt','target-directory') 
copyfile('directory1/sub-directory2/sub-sub-directory2-1/file.txt','target-directory') 

對於您的所有文件都是這樣的,並且您將這些文件放到目標文件夾中。你也可以給出每個源和目的地的完整路徑。

+0

感謝您的響應,但我有多個目錄,所以我想用循環或命令來複制它們,它們可以檢測到directory1的所有目錄,將它們一個接一個地複製是件累人的事情。 – malmo

+0

好的。是否所有文件夾中都有相同擴展名(.txt或.m)的文件 –