我有一个包含许多子文件夹的文件夹(说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包含一些不存在的路径。这是将文件从一个地方复制到目的地的任何方式,如果目标文件夹不存在,请先创建它。
答案 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\');