How to list files with multiple extensions?

Suppose I want mp3 or avi files from a folder, on Unix I could do
ls *.{mp3|avi}
Is there a clean one-liner way to do this in matlab? Presently, I can do it in two lines by doing the following:
f = dir(folder)
f(~cellfun(@isempty,regexpi({f.name},'.*(mp3|avi)'))).name
However, I find this rather ugly compared to the simplicity of the first expression.
Thanks, Kevin

1 件のコメント

Matt J
Matt J 2012 年 10 月 24 日
編集済み: Matt J 2012 年 10 月 24 日
If you find it ugly, why not just wrap it in an mfile of your own?

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

回答 (3 件)

Doug Hull
Doug Hull 2012 年 10 月 24 日

2 投票

Can you run the command twice with two filters? The results would be two structures of the same format that could then be appended together.

2 件のコメント

Kevin
Kevin 2012 年 10 月 24 日
Specifically, do you mean something like this?
f = [dir(fullfile(folder,'*mp3')); dir(fullfile(folder,'*avi'))];
I considered this, and it can certainly do for my present situation. However, it doesn't scale as well to more than a couple of extensions (at least the way I presented it) as the cellfun thing I put previously.
Thanks for the suggestion, though!
Sean de Wolski
Sean de Wolski 2012 年 10 月 24 日
@Kevin, a for-loop over a cell array containing the extentions would allow it to scale, though concatenating structures is ugly.

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

Sean de Wolski
Sean de Wolski 2012 年 10 月 24 日

1 投票

You could just farm that command out to Unix if you are on a unix system...

1 件のコメント

Kevin
Kevin 2012 年 10 月 24 日
You mean, something like:
[~, sysout] = system(['ls ' fullfile(folder,'*{mp3,avi}')]);
fileNames = regexp(sysout,'\n','split');
While this would work, cross comparability with windows is a must for me. Thanks for your input, though!

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

ANKUR WADHWA
ANKUR WADHWA 2019 年 11 月 6 日
編集済み: Cris LaPierre 2024 年 1 月 9 日

1 投票

Though the thread is very old still for users who are looking for an easy way a very simple existing solution on Matlbcentral

カテゴリ

ヘルプ センター および File ExchangeFile Operations についてさらに検索

質問済み:

2012 年 10 月 24 日

編集済み:

2024 年 1 月 9 日

Community Treasure Hunt

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

Start Hunting!

Translated by