2013-09-20 2 views
2

В моем каталоге есть два шаблона именования файлов.Matlab найти все файлы с текстом в его названии

Узор 1:

'XXXXXX FixedCost_zz123.mat' 

Pattern 2

'XXXXXX FixedVolume.mat' 

Таким образом, на основе выше некоторых примерах реальных файлов в моей папке находятся:

'Sap FixedCost_pkz123.mat' 
'ASDFG FixedCost_z1.mat' 
'TUP112RA FixedCost_h1453.mat' 
'as FixedVolume.mat' 
'P1234L FixedVolume.mat' 
'afg FixedVolume.mat' 

Я хочу, чтобы иметь возможность найти все файлы типа «FixedCost» и «FixedVolume» на основе того, что мне нужно в любом случае. Как мне это достичь? Мой ввод функции будет либо «FixedCost», либо «FixedVolume».

ответ

5

Вы можете использовать функцию dir с аргументом, указав шаблон имени файла:

fixedCostFiles = dir('*FixedCost*.mat'); 
fixedVolumeFiles = dir('*FixedVolume.mat'); 

Если вы хотите более сложные выборы и не боятся Java вы можете также использовать Апач FileUtils, они приходят как часть Java от Matlab:

http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html

в частности, проверить функцию listFiles.

+0

Как добавить структуру каталогов к нему, если я хочу предоставить пользователю возможность ввести любой диск, который он хочет использовать, и, следовательно, структура каталогов будет другим вводом функции. – Zanam

+0

В этом случае префикс шаблона-файла с каталогом 'dir (« путь/в/файлы/* FixedCost * .mat »)' - как в ответе MatteoD. – sebastian

2

Это будет возвращать все файлы с определенным групповым символом в имени

file_list_1 = dir(fullfile(directory_path, '*FixedVolume*.mat')) 
file_list_2 = dir(fullfile(directory_path, '*FixedCost_zz123*.mat')) 
Смежные вопросы