Effacer les filtres
Effacer les filtres

How to address files that are starting with certain word

68 vues (au cours des 30 derniers jours)
Homayoon
Homayoon le 7 Mar 2016
Commenté : Jan le 8 Mar 2016
Dear All,
In my main directory I do have 5 subdirectories(named 1,2,3,4 and 5) in all of which there is only one file whose name starts with 'word.' . (After . there is a 5-digit number)
I have written a code on the parent directory which goes into each subdirectories in the order. In each subdirectory I need to fopen the file whose name starts with 'word.', what should I do? Since I do not have any idea about the 5 digit number coming with the name of the file, I cannot use sprintf. Do you have any idea how I can do it?
If the 5-digit number was known then it was really simple as:
input = sprintf('%s%d','REAX.o',12345);
fid = fopen (input, 'r');
But now it is confusing to me.
Thank you so much

Réponses (1)

Jan
Jan le 7 Mar 2016
Modifié(e) : Jan le 7 Mar 2016
FileList = dir(fullfile(Folder, 'word.*'));
FileName = fullfile(folder, FileList(1).name));
fid = fopen(FileName);
...
You will find a lot of submissions in the FileExchange, which find files recursively in subfolders.
  10 commentaires
Homayoon
Homayoon le 7 Mar 2016
I figured it out and this was something that I was looking for: (I had to use sprintf for some reasons)
foldername = sprintf('C:\\Users\\h\\h\\Tt\\Actual Analysis\\BI\\reverse-input\\New folder\\9\\%d',C(1,k));
cd(foldername);
filelist = dir(fullfile( 'REAX.o*'));
filelist(1).name;
out = sprintf ('C:\\Users\\h\\h\\Tt\\Actual Analysis\\BI\\reverse-input\\New folder\\9\\%d\\%s', C(1,k) ,filelist(1).name);
fid = fopen(out,'rt');
Jan
Jan le 8 Mar 2016
Sorry, Homayoon, this is a blind guessing.
  • You do not have to insert double slashes only to remove them using sprintf:
foldername = fullfile( ...
'C:\Users\h\h\Tt\Actual Analysis\BI\reverse-input\New folder\9\', ...
sprintf(%d', C(1,k)));
filelist = dir(fullfile(foldername, 'REAX.o*'));
out = fullfile(foldername, filelist(1).name);
  • Omit the "cd(foldername);", but use absolute file names only.
  • Omit the useless line "filelist(1).name;"
And now this is equivalent to the code I've posted. Voilà.

Connectez-vous pour commenter.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by