1

我有一个文件夹(说 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)

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

4

3 回答 3

1

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

于 2013-06-09T21:21:30.140 回答
0

您可以只使用 shell 转义:

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

Where[old dir]是旧文件夹[new dir]的路径,是存在或将要创建的新文件夹的路径。

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

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

我无法对此进行测试,抱歉。

于 2013-06-09T20:28:28.470 回答
0

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

copyfile('path for source\*', 'path for destination\');
于 2019-09-18T18:00:10.163 回答