一个文件夹中有很多后缀名一样的文件,比如说tiff文件,想根据命名中的分类规律分别把这些文件移动到不同的文件夹中进行归类。
原始文件:
分别想要放到这四个文件夹中:
clc clear all filePath = ‘E:\1SMAPDATA\MOD11A1_test\Category‘;%四个文件夹的上一级文件夹 files = dir(filePath); oldName = cell(length(files)-2,1); for i = 3:length(files) oldName{i-2} = files(i).name;%得c组 end fileFolder=fullfile(‘E:\1SMAPDATA\MOD11A1_test‘);%需要分类的tiff文件所在的文件夹 dirOutput=dir(fullfile(fileFolder,‘*.tif‘)); %把tiff文件列举出来 fileNames={dirOutput.name}‘; %得到tiff文件的名字数组 for i = 1:length(oldName) %遍历每一个文件夹的名字 foldpath=char(oldName{i}); %转为char类型 for j=1:length(fileNames) %遍历每一个tiff文件 charpath=char(fileNames(j)); %转为char类型 mid=strsplit(charpath,‘.‘); %使用‘.‘分隔符对tiff文件名进行分隔 if strcmp(char(mid(2)),foldpath) %取第二个分隔字段和文件夹的名字进行比较 DST_PATH_t = [filePath ,‘\‘,foldpath,‘\‘];%对应文件夹的完整路径 movefile([fileFolder,‘\‘,charpath],DST_PATH_t); %移动tiff文件到文件夹 注意这里都是完整路径 end end end
结果:
另外:
% 假设当前文件夹中有: 文件夹1,文件1.txt, 文件2.txt movefile(‘1.txt‘, ‘11.txt‘); %把1.txt剪切成11.txt,1.txt不存在了,实际上相当于改名 copyfile(‘2.txt‘, ‘22.txt‘); % 把2.txt复制成22.txt,2.txt依然存在 movefile(‘11.txt‘, ‘1‘); % 把11.txt剪切到文件夹1中