所以我需要为多个不同的文件夹解压缩过多的文件(通过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循环所需的命令。实现这一目标的最佳方法是什么?提前谢谢。
答案 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