If I have a logical vector created by ISDIR attribute of DIR, how to have its order by the date of the last modification of folders???

9 visualizaciones (últimos 30 días)
d = dir('D:\= BIO-PD =');
isub = [d(:).isdir]; %# returns logical vector
nameFolds = {d(isub).name}';
In nameFolds I have a cell array with the names of folders contained in 'D:\= BIO-PD ='.
The problem is I need to have nameFolds sorted by the date of the last change of the folders, as it is located in the real folder.

Respuesta aceptada

Stephen23
Stephen23 el 1 de Dic. de 2019
Editada: Stephen23 el 1 de Dic. de 2019
Simpler and much more robust:
S = dir('D:\= BIO-PD =');
S = S([S.isdir] & ~ismember({S.name},{'.','..'})); % folders only, exclude '.' and '..'
[~,X] = sort([S.datenum]); % sort datenum
N = {S(X).name} % folder names in datenum order

Más respuestas (1)

Image Analyst
Image Analyst el 1 de Dic. de 2019
Try this.
files = dir('*.*')
areAFolder = [files.isdir]
files = files(areAFolder) % Get folders only, not files.
% Get rid of dot and dot dot folders.
if length(files) >= 3
% Assume they are the first two entries. Remove them.
files = files(3:end);
% % OR Alternate way that does not depend on them being the first two. Comment out the line above if you use this method.
% [ia, ib] = ismember({'..'}, {files.name})
% files(ib) = [];
% [ia, ib] = ismember({'.'}, {files.name})
% files(ib) = [];
end
[fileDates, sortOrder] = sort([files.datenum], 'descend') % or 'ascend' - whatever you want.
folders = files(sortOrder)
Adapt as needed.
  7 comentarios
Image Analyst
Image Analyst el 2 de Dic. de 2019
I think if you sorted by date before removing the dot and dot dot, then they should always be the first two in the list, because as far as I know they must always be the oldest (unless it's something to do with Windows multiple dates policy). That's what I had intended to do, but didn't. But of course checking the name directly is more robust.
Walter Roberson
Walter Roberson el 2 de Dic. de 2019
The field returned by dir() is modification date, and modification date of a directory reflects the most recent time a file was added or removed from the directory. That would tend to sort . at the end possibly some distance from ..

Iniciar sesión para comentar.

Categorías

Más información sobre Shifting and Sorting Matrices en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by