如何读取多个不同文件夹的多个文件并执行特定命令

How to read, and perform a certain command for multiple files for multiple different folders

提问人:Miss_Orchid 提问时间:2/8/2015 最后编辑:Luis MendoMiss_Orchid 更新时间:2/8/2015 访问量:66

问:

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

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



Parentfolder1 --> folder200 --> 文件 Parentfolder2 --> folder1 --> 个文件



Parentfolder200 --> folder200 -->文件


我在从一个文件夹导航到另一个文件夹,以及从 Parentfolder 导航到 Parentfolder 以使用 dir 命令通过简单的 do 循环执行必要的命令时遇到了一些困难。实现这一目标的最佳方法是什么?先谢谢你。

MATLAB 文件

评论

0赞 Luis Mendo 2/8/2015
每个文件夹中的所有文件都是 类型 吗?还是需要根据扩展名选择合适的文件?.gz
0赞 Miss_Orchid 2/9/2015
是的,每个文件的扩展名为 .gz,并且是文件夹中唯一的文件

答:

0赞 Luis Mendo 2/8/2015 #1

对于这种类型的任务,我喜欢使用 fileattrib。该函数的输入是父文件夹名称。如果以 结尾,则该函数以递归方式工作,并返回文件和文件夹的所有层次结构(可能需要一些时间)。至少这是在 Windows 中发生的事情。\*fileattrib

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

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