MATLAB Answers

How to Remove files that don't match string?

11 ビュー (過去 30 日間)
Ibro Tutic
Ibro Tutic 2017 年 5 月 10 日
コメント済み: dpb 2017 年 5 月 10 日
I have a list of filenames, and I am trying to remove any files that don't have the string 'Z1P', 'Z2P', or 'Z1G' in them.
The file names are stored in a cell array called Files.
Thanks for any help.

  0 件のコメント

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

回答 (2 件)

Guillaume
Guillaume 2017 年 5 月 10 日
The easiest, assuming R2016b or later, is to use contains:
filteredarray = yourcellarray(contains(yourcellarray, 'Z1P') & contains(yourcellarray, 'Z1P') & contains(yourcellarray, 'Z1G'))

  4 件のコメント

表示 1 件の古いコメント
Guillaume
Guillaume 2017 年 5 月 10 日
If it's an or, then
filteredarray = yourcellarray(contains(yourcellarray, {'Z1P', 'Z2P', 'Z1G'}));
In versions < R2016b, the simplest way may be to use regexp:
filteredarray = yourcellarray(~isempty(regexp(yourcellarray, 'Z1P|Z2P|Z1G', 'once')));
Ibro Tutic
Ibro Tutic 2017 年 5 月 10 日
Would it be possible to do this on a structure?
Guillaume
Guillaume 2017 年 5 月 10 日
If by structure you mean the structure returned by dir:
filteredstruct = dirstruct(~isempty(regexp({dirstruct.name}, 'Z1P|Z2P|Z1G', 'once')));

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


dpb
dpb 2017 年 5 月 10 日
編集済み: dpb 2017 年 5 月 10 日
If anywhere in the filename, then
UnwantedStrings={'Z1P', 'Z2P', and 'Z1G'};
Files=Files(~ismember(upper(Files),'UnwantedStrings);
If it's an extension or needs must be in the filename and not extension, use fileparts first to separate pieces needed.

  3 件のコメント

Guillaume
Guillaume 2017 年 5 月 10 日
I don't thing that this is going to work. ismember does not find strings within strings.
If it were to work, the order within ismember would need to change.
Ibro Tutic
Ibro Tutic 2017 年 5 月 10 日
Not sure if you might have just miss-named that variable, but those are the strings that I want. i.e. if the file has Z1P, keep it or Z2P keep it, etc.
dpb
dpb 2017 年 5 月 10 日
Guillaume -- DOH! you're right. regexpi it is...
Ibro--oh, ok, it doesn't work anyway, but read it as to keep everything but. So, if it worked otherwise, lose the ~.

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

Community Treasure Hunt

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

Start Hunting!

Translated by