Matlab list all files in subfolders of the same name...

13 ビュー (過去 30 日間)
Pei JIA
Pei JIA 2011 年 8 月 2 日
Hi, all:
My file/directory structure is as follows:
tests
----dir1
--------sweep
------------results.txt
----dir2
--------sweep
------------results.txt
----dir3
--------sweep
------------results.txt
...
----dirN
--------sweep
------------results.txt
I'd love to list all "results.txt" in all subfolders named "sweep". As you may have noticed, dir1, dir2, ... dirN are different.
Can anybody give me a hand? Thanks...
Cheers Pei
  1 件のコメント
Paulo Silva
Paulo Silva 2011 年 8 月 2 日
what have you done so far in order to do what you want?

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

回答 (5 件)

the cyclist
the cyclist 2011 年 8 月 2 日
ls */sweep/results.txt
  8 件のコメント
Pei JIA
Pei JIA 2011 年 8 月 3 日
Thanks very much.
Either genpath(pwd) doesn't work,
or genpath(pwd) is extremely slow.
Now, 5 minutes passed, nothing happend and genpath(pwd) just kept hanging there in Matlab working space.
Fangjun Jiang
Fangjun Jiang 2011 年 8 月 4 日
That is weird. Do you have lots of sub-folders under \tests\? It works slow for me too but it took 2 seconds to generate a path string totaling 77k characters. Anyway, hope you know the function genapth(), addpath() and which() now.

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


Fangjun Jiang
Fangjun Jiang 2011 年 8 月 2 日
addpath(genpath(pwd));
which results.txt -all
or, function format of which()
files=which('results.txt','-all');

Walter Roberson
Walter Roberson 2011 年 8 月 2 日

Pierre
Pierre 2011 年 8 月 4 日
Unfortunately I'm not allowed to post my solution to a similar problem, but I can roughly summerize my approach: I made a function which looks like
myRecursiveDir(root, varargin);
and in your case you would call it like
myRecursiveDir('tests', 'dir*', 'sweep', 'results.txt');
The method then recursively fetches the list of directories/files at each level with the dir command and returns the composed filenames.
Hope this might help.
  2 件のコメント
Fangjun Jiang
Fangjun Jiang 2011 年 8 月 4 日
I am curious to know why the built-in function genpath() and which() can not do the job. Thanks!
Pierre
Pierre 2011 年 8 月 5 日
Well, depending on the structure of your directory-tree, the number or files/folders besides the ones you want walk-through, and the frequence you query for files, genpath() becomes quite inefficient, as the size of your list of file names grows exponentially in terms of searching depth.
In our case it was definitely worth the effort to invest a quarter of an hour to implement that kind of 'guided' search.
But you are right, genpath() should work for less complex and huge directory trees. When I first read your answer I only remembered 'genpath is not suitable' (it's been a while since we were faced to that issue), I'm sorry for that. ;)

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


Oleg Komarov
Oleg Komarov 2011 年 8 月 4 日
Try rdir:
rdir('C:\tests\**\sweep\results.txt')

カテゴリ

Help Center および File ExchangeFile Operations についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by