issues of Sensitive in 'dir' function

20 views (last 30 days)
Qingping
Qingping on 28 Jan 2013
Edited: Jan on 9 Oct 2015
There is a file named abc.m, but I'm not sure the name is abc.m or Abc.m.
How to determine the true name of file?
I have a test with the true name of file is abc.m
a=dir('abc.m') %a.name=abc.m
and
b=dir('Abc.m') %b.name=Abc.m,
So, I don't know how to deal this question.

Accepted Answer

Jan
Jan on 28 Jan 2013
Edited: Jan on 9 Oct 2015
d = dir('*.m');
match = strcmpi({d.name}, 'abc.m'); % [EDITED] strcmp*i*
Name = d(match).name;
Another implementation: FEX: FileRealCase. This adjusts the upper/lower case of the path also.
  1 Comment
Paul Martin
Paul Martin on 9 Oct 2015
I think the correct function is case-insensitive string comparison with strcmpi:
match = strcmpi({d.name}, 'abc.m')

Sign in to comment.

More Answers (1)

Azzi Abdelmalek
Azzi Abdelmalek on 28 Jan 2013
Edited: Azzi Abdelmalek on 28 Jan 2013
d=dir('*.m');
f1=char(d.name);
f=upper(f1);
idx=find(cellfun(@(x) isequal(x,upper('Abc.m')),cellstr(f)));
out=f1(idx,:)
  1 Comment
Jan
Jan on 28 Jan 2013
There is no reason to convert the names into a CHAR matrix f1. Instead of ISEQUAL inside a CELLFUN, STRCMPI compares directly.

Sign in to comment.

Categories

Find more on File Operations in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!