(.m) Files aus einem Ordner und dessen Unterordnern filtern
Roland_123
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 06.05.2010, 08:01
Titel: (.m) Files aus einem Ordner und dessen Unterordnern filtern
Hallo,
ich bin ein totaler neueinsteiger at matlab und bräuchte mal eure hilfe bitte. Wie im titel schon beschrieben brauche ich ein "script" bzw befehlfolge die mir alle matlab files aus einem verzeichnis auslesen und dann am bildschirm schön nacheinander anzeigen (liste).
durch google konnte ich bereits in erfahrung bringen das ich mit genpath die ordner struktur auslesen kann.
mit dem dir befehl kann ich ja zb nach "*.m*" files suchen, also wo irgendwo vorkommt ".m" egal ob .mat oder sonst was.. hilft mir aber für mein problem nicht weiter.
das wäre ein anfang, names gefällt mir noch nicht ganz wegen '.' und '..'
ich warte auch auf eine antwort mit dir
gruss
Roland_123
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 06.05.2010, 09:55
Titel:
list=dir(ordnerpfad);
names={list.name}
--
das sind aber bei mir n-pfade, darum kann ich das ja nicht verwenden? oder geht das mit einer schleife? wenn ja wie verknüpf ich das mit genpath? das er da bei der schleife dann die pfade abarbeitet? UND nach .m files durchsucht? sind ja mehrere filetypen in den ordnern
Die Idee mit GENPATH und DIR ist schon richtig,
muss du noch entsprechend über Schleifen kombinieren
Code:
pfadliste = genpath(ordnerpfad);
pfadliste = regexp(pfadliste(1:end-1),pathsep,'split');
for k=1:length(pfadliste)
mfiles= dir(fullfile(pfadliste{k},'*.m'));
mfiles={mfiles.name};
if ~isempty(mfiles) fprintf('In Ordner %s:\n',pfadliste{k}) for l=1:length(mfiles) fprintf('%3d): %s\n',l,mfiles{l}) end end end
% lese alle Unterverzeichnisse aus
pfadliste = genpath(pwd);
%
% splitte string to cell array
pfadliste = regexp(pfadliste(1:end-1),pathsep,'split');
%
% schaue durch alle Verzeichnisse for k=1:length(pfadliste)
%
% suche in aktuellen Verzeichnis M-Files raus
mfiles = dir(fullfile(pfadliste{k},'*.m'));
%
% umformen zu cell array
mfiles = {mfiles.name};
%
% anzahl der m-files in aktuellem Vezeichnis
cur_len = length(mfiles);
%
% bei ersten Durchlauf if k == 1
last_len = 0;
%
% intialisiere cell array der Größe "Anzahl gefundener Files" x 2
X = cell(last_len + cur_len,2);
else
%
% merke letzten Stand von X
tX = X;
% % bestimme die Anzahl schon gefundener Files
last_len = size(X,1);
%
% erzeuge neue größeren Cell Array, % welcher die Größe aus Anzahl zuletzt gefundener und % aktuell gefundener Files haben soll
X = cell(last_len + cur_len,2);
%
% kopiere die zuletzt gefundene Files wieder zurück in X
X(1:last_len,1) = tX(:,1);
X(1:last_len,2) = tX(:,2);
% jetzt ist end
%
% kopiere pfad, dabei muss angefangen werden, % eine Position von letztem Eintrag bis in Prinzip bis % Ende, deswegen kann man hier sogar vereinfachen %
X(last_len+1:end,1)= pfadliste(k);
%
% kopiere aktuelle gefundene M-Files, gleicher Prinzip
X(last_len+1:end,2)= mfiles(:);
end
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.