我想删除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
不起作用...有任何线索吗?非常感谢。
为了检测和删除文件夹,我将使用所isdir
返回的结构的字段dir
。您还可以删除'.'
和'..'
,而通常使用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的文件创建索引,然后将其删除:
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
。这使您可以选择对文件夹执行操作而不将其作为当前目录。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句