我需要统计这样分布文件夹:
01#下的文件分布(其他文件夹和01#有同样的结构分布):
下各个文件数目。这是一个三级目录,并且由于需要这样统计的文件夹还有很多,用鼠标一个个查看然后手动汇总这些数目真的是很费力,聪明如我这样的人是不会这么蛮干的,这些文件目录都是有规律分布的,因此程序最适合干这样的事了,于是乎动手写了个Matlab程序来自动汇总这些文件夹的文件数目,为了保持文件夹及其子文件以及文件这样成树状分布(学过数据结构的大概都知道,没学过一句话说明:例如你有这样的目录D:/a/b,在b文件夹下有两个子文件c1,c2,那么a是根目录,b是a的孩子,c1和c2是b的孩子,这样的结构画出来就像一颗树状结构)的结构形式以方便查看,因此这个程序比直接获取文件夹然后统计文件数目要复杂些。具体见代码:
%2018/12/04 by DQ
%得到三级目录下的文件夹及其文件数目并生成excel 表单(树状结构)
clc;
clear ;
close all;
tic;
RootFolder='E:\原始数据';
MainFolder=fullfile(RootFolder,'可见光');
XlsFileName='图片量记录表.xls';
XlsFilePath=fullfile(RootFolder,XlsFileName);
S1FolderSet=dir(MainFolder);
S1FolderNum=length(S1FolderSet);
K1=4;
xlRange=sprintf('E%d:F%d:G%d',K1-2,K1-2,K1-2);
xlswrite(XlsFilePath,{'图片总量','使用量','备注说明'},'sheet1',xlRange);
AllImNumLoc=K1-1;
AllImNum=0;
for i=3:S1FolderNum
S1FolderName=S1FolderSet(i).name;
S1FolderPath=fullfile(MainFolder,S1FolderName);
S2FolderSet=dir(S1FolderPath);
S2FolderNum=length(S2FolderSet);
S1FolderLoc=K1;
xlRange=sprintf('A%d',S1FolderLoc);
xlswrite(XlsFilePath,{S1FolderName},'sheet1',xlRange);
TotalImNum=0;
K2=S1FolderLoc;
fprintf('doing %s\n',S1FolderName);
for j=3:S2FolderNum
S2FolderName=S2FolderSet(j).name;
S2FolderPath=fullfile(S1FolderPath,S2FolderName);
S3FolderSet=dir(S2FolderPath);
S3FolderNum=length(S3FolderSet);
S2FolderLoc=K2+1;
xlRange=sprintf('B%d',S2FolderLoc);
xlswrite(XlsFilePath,{S2FolderName},'sheet1',xlRange);
K3=0;
fprintf('------%s------\n',S2FolderName);
for k=3:S3FolderNum
S3FolderName=S3FolderSet(k).name;
S3FolderPath=fullfile(S2FolderPath,S3FolderName);
if isdir(S3FolderPath)
K3=K3+1;
S3FolderLoc=S2FolderLoc+K3;
xlRange=sprintf('C%d',S3FolderLoc);
xlswrite(XlsFilePath,{S3FolderName},'sheet1',xlRange);
fprintf('%s\n',S3FolderName);
ImSet=dir(strcat(S3FolderPath,'/*.jpg'));
ImNum=length(ImSet);
xlRange=sprintf('D%d',S3FolderLoc);
xlswrite(XlsFilePath,{ImNum},'sheet1',xlRange);
TotalImNum=TotalImNum+ImNum;
else
continue;
end
end
K2=S3FolderLoc;
end
xlRange=sprintf('E%d',S1FolderLoc);
xlswrite(XlsFilePath,{TotalImNum},'sheet1',xlRange);
AllImNum=AllImNum+TotalImNum;
K1=K2+1;
end
xlRange=sprintf('E%d',AllImNumLoc);
xlswrite(XlsFilePath,{AllImNum},'sheet1',xlRange);
toc;
运行程序将得到如下图所示excel统计表单:
如此就完成了文件夹下文件汇总