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 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Kapa Kudaibergenov
am 1 Dez. 2019
Bearbeitet: Stephen23
am 3 Jul. 2022
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.
2 Kommentare
Walter Roberson
am 1 Dez. 2019
Look at the second output of sort, and use that to reorder the other content
Akzeptierte Antwort
Stephen23
am 1 Dez. 2019
Bearbeitet: Stephen23
am 1 Dez. 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
1 Kommentar
Weitere Antworten (1)
Image Analyst
am 1 Dez. 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 Kommentare
Image Analyst
am 2 Dez. 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
am 2 Dez. 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 ..
Siehe auch
Kategorien
Mehr zu Shifting and Sorting Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!