我想在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
不起作用......有什么线索吗?
非常感谢。
答案 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{:});
请注意,我使用上面的使用folder
返回的结构的name
和dir
字段构建了每个文件的完整路径。这使您可以选择对文件夹执行操作,而不必将其作为当前目录。