フィルターのクリア

issues of Sensitive in 'dir' function

22 ビュー (過去 30 日間)
Qingping
Qingping 2013 年 1 月 28 日
編集済み: Jan 2015 年 10 月 9 日
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.
  1 件のコメント
Walter Roberson
Walter Roberson 2013 年 1 月 28 日
Is your filesystem case sensitive?

サインインしてコメントする。

採用された回答

Jan
Jan 2013 年 1 月 28 日
編集済み: Jan 2015 年 10 月 9 日
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 件のコメント
Paul Martin
Paul Martin 2015 年 10 月 9 日
I think the correct function is case-insensitive string comparison with strcmpi:
match = strcmpi({d.name}, 'abc.m')

サインインしてコメントする。

その他の回答 (1 件)

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 1 月 28 日
編集済み: Azzi Abdelmalek 2013 年 1 月 28 日
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 件のコメント
Jan
Jan 2013 年 1 月 28 日
There is no reason to convert the names into a CHAR matrix f1. Instead of ISEQUAL inside a CELLFUN, STRCMPI compares directly.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeFile Operations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by