Elimine todas las subcarpetas y archivos excepto una extensión específica dentro de la carpeta principal

user3641311

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 -exceptno funciona ... ¿Alguna pista al respecto? Muchas gracias.

gnovice

Para detectar y eliminar carpetas, usaría el isdircampo de la estructura que devuelve dir. También puedes eliminar los '.'y '..'de forma general usando ismemberque 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 regexppara 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é fullfileen lo anterior para crear una ruta completa a cada archivo usando los campos foldery namede 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

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

TOP Lista

CalienteEtiquetas

Archivo