删除父文件夹

时间:2017-10-05 23:38:45

标签: matlab

我想在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不起作用......有什么线索吗? 非常感谢。

1 个答案:

答案 0 :(得分:1)

为了检测和删除文件夹,我会使用dir返回的结构的isdir字段。您也可以使用ismember以一般方式删除'.''..',而regexp并不依赖于前两者:

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

要删除文件,您可以使用delete创建一个没有' .xlsx'的文件的索引。扩展,然后fullfile他们:

fileList = dirData(~[dirData.isdir]);
deleteIndex = cellfun(@isempty, regexp({fileList.name}, '.xlsx'));
deleteList = fullfile({fileList(deleteIndex).folder}, {fileList(deleteIndex).name});
delete(deleteList{:});

请注意,我使用上面的enter image description here使用folder返回的结构的namedir字段构建了每个文件的完整路径。这使您可以选择对文件夹执行操作,而不必将其作为当前目录。