list names in an array
이전 댓글 표시
I have many files that i want to list their names in an array but the name is full for example
F:\New\checkfiles\C100.csv
댓글 수: 5
Barakat Ibrhim
2019년 6월 13일
Adam Danz
2019년 6월 13일
It sounds like you're doing something wrong.
Does your code look like this?
d = dir('C:\Users\name\Documents\MATLAB\');
% list all file
{d.name}'
the cyclist
2019년 6월 13일
It would be handy if dir took an argument, allowing specification of the full path in the output. It seems like this would be a common enough thing to want to do.
Adam Danz
2019년 6월 13일
Agreed. I suggested testing d.name because the OP stated that it was only returning file name when it should be returning the file extension as well.
답변 (2개)
Guillaume
2019년 6월 13일
A lot simpler than all that has been suggested:
foldercontent = dir('C:\somewhere\*.csv');
filelist = fullfile({foldercontent.folder}, {foldercontent.name}); %that's all that is needed.
As said, if a string array is needed, string will convert the cell array of char vectors into a string array
댓글 수: 4
That is more simpler to read and more intuitive. However, for those obsessed with speed, The Cyclist's solution is 1.56x faster and my solution is 1.84x faster; probably due to avoiding overhead in fullfile (median speed comparison of 10,000 repetitions of each single line solution).
Guillaume
2019년 6월 14일
I would argue that clarity completely trumps speed in this case particularly as the speed difference would be insignificant compared to the file IO that will inevitably follow.
Adam Danz
2019년 6월 14일
Definitely clairity over milliseconds.
the cyclist
2019년 6월 13일
I'm pretty sure there is a better, simpler way to do this, but I believe this does what you want:
s = dir;
fileList = cellfun(@(x,y)[x,'/',y],{s.folder}',{s.name}','UniformOutput',false);
댓글 수: 4
Barakat Ibrhim
2019년 6월 13일
the cyclist
2019년 6월 13일
편집: the cyclist
2019년 6월 13일
string(fileList)
will convert the cell array to a string array (at least in R2018b).
Adam Danz
2019년 6월 13일
"I'm pretty sure there is a better, simpler way..."
s = dir;
fileList = strcat({s.folder}',repmat({'/'},size(s)),{s.name}');
Stephen23
2019년 6월 14일
"I'm pretty sure there is a better, simpler way..."
S = dir(...);
F = cellfun(@fullfile,{S.folder}',{S.name}','uni',0);
Or simply:
F = fullfile({S.folder},{S.name});
카테고리
도움말 센터 및 File Exchange에서 File Operations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!