uigetfile fullfile dicominfo list matlab folder dir

list - fullfile - struct matlab



enumerar las subcarpetas en una carpeta-Matlab(solo subcarpetas, no archivos) (4)

Necesito enumerar las subcarpetas dentro de una carpeta usando Matlab. Si uso

nameFolds = dir(pathFolder),

Yo entiendo y .. + los nombres de la subcarpeta. Entonces tengo que ejecutar nameFolds(1) = [] dos veces. ¿Hay una mejor manera de obtener los nombres de Subfolders usando Matlab? Gracias.


El siguiente fragmento de código simplemente devuelve el nombre de las subcarpetas.

% `rootDir` is given dirs = dir(rootDir); % remove `.` and `..` dirs(1:2) = []; % select just directories not files dirs = dirs([obj.dirs.isdir]); % select name of directories dirs = {dirs.name};


Esto es mucho más astuto y toda una línea:

dirs = regexp(genpath(parentdir),[''[^;]*''],''match'');

Explicado: genpath() es un comando que escupe todas las subcarpetas del parentdir en una sola línea de texto, separadas por punto y coma. La función de expresión regular regexp() busca patrones en esa cadena y devuelve la opción: ''coincide'' con el patrón. En este caso, el patrón es cualquier carácter, no un punto y coma = `[^;], repetido una o más veces en una fila = *. Por lo tanto, esto buscará la cadena y agrupar todos los caracteres que no sean punto y coma en salidas separadas, en este caso todos los directorios de la subcarpeta.


Utilice el campo isdir de la salida del dir para separar los subdirectorios y archivos:

d = dir(pathFolder); isub = [d(:).isdir]; %# returns logical vector nameFolds = {d(isub).name}'';

Luego puedes eliminar . y ..

nameFolds(ismember(nameFolds,{''.'',''..''})) = [];

No debe hacer nameFolds(1:2) = [] , ya que la salida del directorio raíz no contiene esas carpetas de puntos. Al menos en Windows.


Y para reutilizar efectivamente la primera solución provista en diferentes escenarios, hice una función de esto:

function [ dirList ] = get_directory_names( dir_name ) %get_directory_names; this function outputs a cell with directory names (as %strings), given a certain dir name (string) %from: http://.com/questions/8748976/list-the-subfolders- %in-a-folder-matlab-only-subfolders-not-files dd = dir(dir_name); isub = [dd(:).isdir]; %# returns logical vector dirList = {dd(isub).name}''; dirList(ismember(dirList,{''.'',''..''})) = []; end