How to Remove files that don't match string?

6 Ansichten (letzte 30 Tage)
Ibro Tutic
Ibro Tutic am 10 Mai 2017
Kommentiert: dpb am 10 Mai 2017
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.

Antworten (2)

Guillaume
Guillaume am 10 Mai 2017
The easiest, assuming R2016b or later, is to use contains:
filteredarray = yourcellarray(contains(yourcellarray, 'Z1P') & contains(yourcellarray, 'Z1P') & contains(yourcellarray, 'Z1G'))
  4 Kommentare
Ibro Tutic
Ibro Tutic am 10 Mai 2017
Would it be possible to do this on a structure?
Guillaume
Guillaume am 10 Mai 2017
If by structure you mean the structure returned by dir:
filteredstruct = dirstruct(~isempty(regexp({dirstruct.name}, 'Z1P|Z2P|Z1G', 'once')));

Melden Sie sich an, um zu kommentieren.


dpb
dpb am 10 Mai 2017
Bearbeitet: dpb am 10 Mai 2017
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 Kommentare
Ibro Tutic
Ibro Tutic am 10 Mai 2017
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 am 10 Mai 2017
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 ~.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Characters and Strings finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by