WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Umlaute File Liste

 

Thomas_74
Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 06.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2013, 11:04     Titel: Umlaute File Liste
  Antworten mit Zitat      
Hi,
ich suche aus Ordnern und Unterordnern Dateien raus und filtere die nach der Endung und möchte dann z.B. alle .db und .tif Dateien automatisch löschen.

Code:
function [filelist]=Ordner_open(Filter,pathname)
%% arbeitet mit ü ä ö und [ ]
tmp_fname  = fullfile(tempdir, 'tempfile.tmp' );
%% Ausgabe in ein File umleiten
system(sprintf('DIR %s > %s /B /s', pathname ,tmp_fname) )
%% einlesen
fid = fopen(tmp_fname,'r','n','windows-1252');
filelist = fread(fid);
fclose(fid);
%% umlaute ersetzen
filelist(filelist==142)  = double('Ä');
filelist(filelist==153)  = double('Ö');
filelist(filelist==154)  = double('Ü');
filelist(filelist==132)  = double('ä');
filelist(filelist==148)  = double('ö');
filelist(filelist==129)  = double('ü');
filelist(filelist==225)  = double('ß');
%% Rücklauf Zeichen löschen (\r)
filelist(filelist==13)   = [];
filelist= char(filelist)';
filelist = regexp(filelist,'\n','split');
%% filter definition
filt_pos = regexp(filelist ,Filter); %'\.(mp3|wav)'
filt_pos = ~cellfun('isempty' ,filt_pos);
%% filter anwenden
filelist  = filelist(filt_pos);


Allerdings habe ich das Problem, dass bei ein paar Dateien die wohl ursprünglich ein ö im Dateinamen hatten beim rum kopieren dieses durch "+Â" ersetzt wurde (leider nicht bei allen). Was bei meiner Auswhl oben als ö interpretiert wird und dann zu einem Fehler mit
Code:
führt.

Jetzt suche ich eine möglichkeit Dateien mit dem korrekten/Windows Dateinamen (mit und ohne Umlaute) zu erfassen.

MfG Thomas
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.03.2013, 12:08     Titel:
  Antworten mit Zitat      
Hallo,

gibt es einen Grund, warum du nicht den dir-Befehl in MATLAB verwendest? Das ist meines Erachtens deutlich handlicher.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas_74
Themenstarter

Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 06.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2013, 13:08     Titel:
  Antworten mit Zitat      
Hi,

ich durchsuche Ordner und diverse stufen Unterordner nach Dateien und das geht (glaub ich) nicht mit dem Matlab dir.
Außerdem will ich auch die Umlaute (wenn sie denn wirklich im Dateinamen stehen) mitnehmen.

MfG Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.03.2013, 13:34     Titel:
  Antworten mit Zitat      
Hallo,

das geht, indem du rekursiv die Unterordner durchsuchst, d.h. die Funktion wieder auf jeden Unterordner anwendest und die Resultate aneinanderhängst.
Umlaute sind für den MATLAB dir-Befehl kein Problem.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas_74
Themenstarter

Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 06.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2013, 13:45     Titel:
  Antworten mit Zitat      
Hi,

gibt es da eine elegante Methode das rekursiv zu machen? Oder sollte ich das über Schleifen laufen lassen und dann immer isdir=1; abfragen?
Geht das auch, wenn ich damit eine ganze Festplatte durchsuche oder kann das Probleme mit der Listengröße geben?


Vielen Dank Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas_74
Themenstarter

Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 06.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2013, 14:23     Titel:
  Antworten mit Zitat      
Hmmm,

krieg ich irgendwie nicht hin. Ich könnte zwar mit cd hüpfen und dann wieder dir ausführen um die Dateinamen in eine Liste zu schreiben allerdings funktioniert das nicht bei mehr als einem Unterordner.

P.S.: Die Einlesefunktion wurde hier gepostet:http://www.gomatlab.de/dateiliste-e.....-unterordnern-t14085.html

Aber falls jemand eine Dateiliste in Ordnern und Unterordnern erstellen kann wär ich für einen alternativen Code dankbar

MfG Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.03.2013, 16:08     Titel:
  Antworten mit Zitat      
Hallo,

in dem vorherigen Thread wurde genpath eingeführt, was es etwas einfacher macht. Ich würde also eine Liste z.B. aller .txt-Dateien im momentanen Verzeichnis oder seinen Unterverzeichnissen so erstellen:

Code:
pathname=pwd;
temp = genpath(pathname);
pathlist = regexp([temp ';'],'(.*?);','tokens')';
pathlist = [pathlist{1:end-1}]';
filelist = [];
for I=1:numel(pathlist)
    newfiles = dir(fullfile(pathlist{I}, '*.txt'));
    filelist = [filelist; fullfile(pathlist{I}, {newfiles.name}')];
end


Falls das nicht weiterhilft, bitte möglichst genau angeben, wo das Problem liegt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.03.2013, 23:39     Titel:
  Antworten mit Zitat      
Hallo Thomas,

Solche Probleme haben natürlich schon andere gehabt. Deshalb lohnt es sich zunächst mal eine Internet-Suchmaschine nach "Matlab recursive dir" zu fragen. Du landest dann zielsicher in Matlab's FileExchange, in dem tausende User meistens nützliche Codes veröffentlicht haben.

Wann immer man auf ein Matlab-Problem stößt, dass nicht aussergewöhnlich speziell ist, ist eine Suche im Netz und speziell im FileExchange wärmstens zu empfehlen. Das ist sogar schneller als das Forum zu befragen, da z.B. Google Antwortzeiten um die 0.33 Sekunden hinbekommt. Da ist dieses Forum noch weit langsamer...

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
jurtsche
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 26.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2013, 09:59     Titel:
  Antworten mit Zitat      
zum löschen einfach:

Code:

cd(BaseFodler);
system('del *.tif  /s');
system('del *.db /s');
 


fertig?
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas_74
Themenstarter

Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 06.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2013, 12:10     Titel:
  Antworten mit Zitat      
Jo Funktioniert Danke!!
Private Nachricht senden Benutzer-Profile anzeigen
 
jurtsche
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 26.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2013, 12:14     Titel:
  Antworten mit Zitat      
optimal, kein problem.
LG
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.