Strange behavior retrieving directories' names with dir
2 次查看(过去 30 天)
显示 更早的评论
I am trying to extract the names of the subdirectories contained in one directory. For example:
mainDirectory
matlabScript.m
results
subdirectory1
subdirectory2
subdirectory3
subdirectory4
I am running the following in matlabScript.m :
subdirectories = dir([pwd filesep results filesep]);
In theory, I should get a structure with 4 elements, one for each subdirectory. However, I am getting 6 elements. Of these, 4 are the desired subdirectories, but the other two are two mysterious subdirectories:
name: '.'
date: '30-sep-2011 10:09:14'
bytes: 0
isdir: 1
datenum: 7.3478e+005
name: '..'
date: '27-sep-2011 19:51:12'
bytes: 0
isdir: 1
datenum: 7.3477e+005
I am pretty sure I do not have this directories. I already read the documentation of dir ant nothing is stated. I also changed the OS properties to show any hidden folders and not even with that I found them. How can I correct this strange behavior? I am running MATLAB R2010b in a computer with Windows 7, 64 bits.
Thanks in advance
0 个评论
采纳的回答
Jan
2011-9-30
Some modifications: cd is faster than pwd, the trailing file separator is not needed, fullfile is smarter than [cd, filesep, results], because it considers the already existing separator in e.g. "C:\":
subdirectories = dir(fullfile(cd, results));
If you want to exclude all files and folders starting with a dot -e.g. a common method under Unix:
subdirectories(strncmp({subdirectories.name}, '.', 1)) = [];
To remove only "." and "..":
subname = {subdirectories.name};
subname(strcmp(subname, '.')) = [];
subname(strcmp(subname, '..')) = [];
Although these two directories have been the first and second entries in the list in all of my tests under Windows95 to Windows7, Suse-Linux, MacOS7/8/9/X, AUX and AIX, I would not rely on this, but use astring comparison always.
1 个评论
Walter Roberson
2011-9-30
The directory order is not defined by dir(), and depends upon the properties of the underlying file system. If the filesystem is one that does not happen to put . and .. first, then dir() will not return them as the first two entries.
更多回答(1 个)
Grzegorz Knor
2011-9-30
This is not a strange behaviour:
. - is a current directory, type:
cd .
and .. is a parent directory, type:
cd ..
2 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 File Operations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!