删除父文件夹内除特定扩展名以外的所有子文件夹和文件
问题描述:
我想要在Matlab中删除父文件夹内的所有子文件夹。 我写了下面的代码:删除父文件夹内除特定扩展名以外的所有子文件夹和文件
files=dir;
for ii = 3:1:size(files,1)
if isdir(files(ii).folder) == 1
rmdir (files(ii).name)
end
end
但是,它返回错误。第一个文件夹是'.'
和'..'
。 如何删除里面的每个文件夹? 另外,我写了下面的代码从父文件夹的文件每除了删除Excel文件(XLSX):
delete -except *.xlsx
不像delvar
,旗-except
不工作...任何线索呢? 非常感谢。
答
对于检测和删除文件夹,我会使用由dir
返回的结构的isdir
字段。您也可以删除'.'
和'..'
使用ismember
不依赖于它们是前两种一般方法:
dirData = dir();
dirList = dirData([dirData.isdir]);
dirList = dirList(~ismember({dirList.name}, {'.', '..'}));
for iDir = 1:numel(dirList)
rmdir(fullfile(dirList(iDir).folder, dirList(iDir).name));
end
对于删除的文件,你可以用regexp
创建文件的索引没有一个.xlsx等扩展名,然后delete他们:
fileList = dirData(~[dirData.isdir]);
deleteIndex = cellfun(@isempty, regexp({fileList.name}, '.xlsx'));
deleteList = fullfile({fileList(deleteIndex).folder}, {fileList(deleteIndex).name});
delete(deleteList{:});
注意,我在上面使用fullfile
建立使用返回结构的folder
和name
领域的完整路径,以每个文件dir
。这使您可以选择对文件夹执行操作,而无需将其作为当前目录。
谢谢!奇迹般有效!! – user3641311
我只需要添加''s''到'rmdir(fullfile(dirList(iDir).folder,dirList(iDir).name));否则它不会删除现有文件夹!非常感谢的人! – user3641311