2012-07-09 176 views
1

我想搜索所有.doc文件的目录和子目录,并使用MatLab将它们全部压缩到一个文件中。如果我使用zip() matlab函数,它只允许一个根目录。 ZIP(ZIPFILENAME, FILES, ROOTDIR)MATLAB搜索和邮政编码

1)如何递归搜索子目录?

2)如何将所有zip文件添加到一个文件夹中?

是否最好搜索并将所有.doc文件移动到临时文件夹中,然后从该位置压缩它们?

+0

你为什么要在MATLAB中压缩文件?这有点奇怪。 – chaohuang 2012-07-09 18:04:12

+0

是的,这更适合bash脚本。 – Squazic 2012-07-09 18:21:29

+0

我希望使用一个simulink块,它将使用一个回调到.m脚本来收集所有模型报告doc文件并将它们压缩到一个文件夹中。此外,我不使用Linux我在Windows PC上 – user1469906 2012-07-09 18:27:28

回答

0

首先,使用dos(...)为所有.doc文件,包括所有子目录(选项/S),但仅显示文件名,没有附加信息(选项/B)。所述第一输出参数是返回的状态,第二输出参数是在命令行上返回的字符串:

[~, filenamesFromDos] = dos('dir *.doc /B/S'); 

其次,从该命令作为单元阵列中提取文件名。文件名是由换行(\n)炭和路径分隔可能包含空格,从而​​:

filenames = textscan(filenamesFromDos,'%s','Delimiter','\n','Whitespace',''); 

filenames那么一个<1x1 cell>,包含文件名的字符串的<Nx1 cell>。有了这个<Nx1 cell>我们可以调用内置MATLAB函数​​:

zip('zip_file.zip',filenames{1}); 

完成。