Quiero eliminar todas las subcarpetas dentro de una carpeta principal en Matlab. Escribí el siguiente código:
files=dir;
for ii = 3:1:size(files,1)
if isdir(files(ii).folder) == 1
rmdir (files(ii).name)
end
end
Sin embargo, devuelve un error. Los primeros en carpetas son '.'
y '..'
. ¿Cómo puedo eliminar todas las carpetas del interior? Además, escribí el código a continuación para eliminar todos los archivos de la carpeta principal, excepto los archivos de Excel (xlsx):
delete -except *.xlsx
A diferencia delvar
, la bandera -except
no funciona ... ¿Alguna pista al respecto? Muchas gracias.
Para detectar y eliminar carpetas, usaría el isdir
campo de la estructura que devuelve dir
. También puedes eliminar los '.'
y '..'
de forma general usando ismember
que no dependa de que sean los dos primeros:
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
Para eliminar los archivos, puede usar regexp
para crear un índice de los archivos que no tienen una extensión '.xlsx', luego elimínelos :
fileList = dirData(~[dirData.isdir]);
deleteIndex = cellfun(@isempty, regexp({fileList.name}, '.xlsx'));
deleteList = fullfile({fileList(deleteIndex).folder}, {fileList(deleteIndex).name});
delete(deleteList{:});
Tenga en cuenta que utilicé fullfile
en lo anterior para crear una ruta completa a cada archivo usando los campos folder
y name
de la estructura devuelta por dir
. Esto le da la opción de realizar operaciones en una carpeta sin tenerla como directorio actual.
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras