如何为多个不同文件夹的多个文件读取和执行某个命令

时间:2015-02-08 03:31:44

标签: matlab file

所以我需要为多个不同的文件夹解压缩过多的文件(通过gzip命令),比如文件夹1到200(名称文件夹1到文件夹200)。然后,这些文件夹(1到200)位于其他父文件夹中:Parentfolder1-Parentfolder200,简单地说。结构将如此:

Parentfolder1 - > folder1 - >文件,都将被解压缩(gzip * .gz)
Parentfolder1 - > folder2 - >档



Parentfolder1 - > folder200 - >档
Parentfolder2 - > folder1 - >档


Parentfolder200 - > folder200 - >文件


我在从一个文件夹导航到另一个文件夹时遇到一些困难,而Parentfolder到Parentfolder则使用dir命令执行简单的do循环所需的命令。实现这一目标的最佳方法是什么?提前谢谢。

1 个答案:

答案 0 :(得分:0)

对于这类任务,我喜欢使用fileattrib。该函数的输入是父文件夹名称。如果您使用\*结束该名称,fileattrib函数将递归,并返回文件和文件夹的所有层次结构(可能需要一些时间)。至少在Windows中会发生什么。

所以你可以沿着这些方向使用某些东西。在以下代码中,应用于每个文件的处理仅包括显示其全名(路径);在您的情况下,您将应用所需的命令。

root_folder = 'your\root\folder'; %// root folder of all files you want to process
extension = '.gz'; %// process only files whose name ends with this string
e = numel(extension);
[status, files] = fileattrib([root_folder '\*']); %// add '\*'
for n = 1:numel(files)
    if ~files(n).directory &&...
        numel(files(n).Name)>=e &&...
        all(files(n).Name(end-e+1:end)==extension)
        %// file(n) is of the desired type. Do domething with it.
        %// Its full name (path) is given by files(n).Name
        disp(files(n).Name) %// in this example we only display its full name
    end
end