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 commentaire

Matt J
Matt J le 24 Oct 2012
Modifié(e) : Matt J le 24 Oct 2012
If you find it ugly, why not just wrap it in an mfile of your own?

Connectez-vous pour commenter.

Réponses (3)

Doug Hull
Doug Hull le 24 Oct 2012

2 votes

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 commentaires

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 le 24 Oct 2012
@Kevin, a for-loop over a cell array containing the extentions would allow it to scale, though concatenating structures is ugly.

Connectez-vous pour commenter.

Sean de Wolski
Sean de Wolski le 24 Oct 2012

1 vote

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

1 commentaire

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!

Connectez-vous pour commenter.

ANKUR WADHWA
ANKUR WADHWA le 6 Nov 2019
Modifié(e) : Cris LaPierre le 9 Jan 2024

1 vote

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

Catégories

En savoir plus sur File Operations dans Centre d'aide et File Exchange

Question posée :

le 24 Oct 2012

Community Treasure Hunt

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

Start Hunting!

Translated by