Borrar filtros
Borrar filtros

How can I use "dir" with multiple search strings? or join the results of two dir calls?

50 visualizaciones (últimos 30 días)
Hi,
How can I use "dir" with multiple search strings? or join the results of two dir calls?
I basically want to do something like this:
dir('*.txt','*.doc')
so that I get a list of the .txt and .doc files.
Or join the results of two dir calls.

Respuesta aceptada

Walter Roberson
Walter Roberson el 28 de Feb. de 2011
jointdir = [dir('*.txt'); dir('*.doc')];

Más respuestas (3)

Seth DeLand
Seth DeLand el 28 de Feb. de 2011
You can save the output of DIR as a structured array, or in your case two structured arrays that can then be combined:
files1 = dir('*.txt');
files2 = dir('*.doc');
allfiles = [files1;files2];
You can then access names by indexing into the array:
filename = allfiles(7).name;
This will return the name of the 7th file in the array.

Matt Tearle
Matt Tearle el 28 de Feb. de 2011
Do you just need the filenames, or do you actually need file info as well? If it's just the names, the simplest way (I think) is to use ls rather than dir:
x = cellstr(ls('*.m'));
y = cellstr(ls('*.txt'));
[x;y]

Walter Roberson
Walter Roberson el 1 de Mzo. de 2011
On Unix systems, if you just need the names, the simplest way would probably be to use
[junk, allfiles] = system('ls *.{txt,doc}');
This would not work on Windows. Also, it can not be shortened to
allfiles = ls('*.{txt,doc}');
as Matlab's ls function deliberately escapes any unix meta-characters before sending them to ls.

Categorías

Más información sobre File Operations en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by