将所有文件从一个文件夹复制到matlab中的目标

时间:2013-06-09 20:15:28

标签: matlab filepath

我有一个包含许多子文件夹的文件夹(说ORIG)(每个子文件夹也包含其子文件夹,依此类推)。我试图将具有扩展* .fig的所有文件复制到具有完全相同的子文件夹结构的新文件夹(DEST)。由于子文件夹太多,手动创建这些子文件夹需要很长时间。所以我正在寻找一种方法来实现它。我找到一个名为dirr的代码来递归列出所有文件,我正在尝试编写简单的代码来检索所有* .fig文件,如下所示

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)

此代码不起作用,因为newfullpath包含一些不存在的路径。这是将文件从一个地方复制到目的地的任何方式,如果目标文件夹不存在,请先创建它。

3 个答案:

答案 0 :(得分:1)

我终于找到了一种方法。我首先列出所有文件,枚举每个文件,提取路径,将旧路径替换为新路径,如果新路径不存在,首先mkdir然后将旧文件一次复制到新文件。它并不快,但至少工作。如果有人有更好的想法,请告诉我。感谢。

答案 1 :(得分:0)

你可以使用shell转义:

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

其中[old dir]是旧文件夹的路径,[new dir]是新文件夹的路径,无论是存在还是将要创建。

编辑:在Windows上,您可以使用dos命令:

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

我无法测试,对不起。

答案 2 :(得分:0)

在MATLAB R2017a中,您可以按以下方式使用copyfile函数:

copyfile('path for source\*', 'path for destination\');