2016-08-10 2 views
0

ich eine Reihe von Dateien, die wie folgt aussehen:mit einer Liste

imgDATA_subj001_log000_sess001_at.img 
imgDATA_subj001_log000_sess001_cn.img 
imgDATA_subj001_log000_sess001_cx.img 
imgDATA_subj001_log000_sess002_at.img 
imgDATA_subj001_log000_sess002_cn.img 
imgDATA_subj001_log000_sess002_cx.img 
imgDATA_subj002_log000_sess001_at.img 

...

Ich möchte einen bestimmten numerischen Teil des Dateinamens umbenennen nach subj. Zum Beispiel werden subj001, subj002, subj003 usw. in subj014, subj027, subj65 usw. umbenannt, aber der Rest des Dateinamens bleibt erhalten. Ich habe die Liste der neuen Namen aber nicht sicher, wie man nach alten Namen sucht und mit den neuen Namen übereinstimmt, dann mache die Umbenennung. Ich habe versucht, Schleifen und fileparts, aber ich weiß nicht, wie man die Subj *** Komponente zu isolieren. Ich könnte move tun, aber das wäre sehr ineffizient. Kann jemand helfen?

+0

Ich denke, die Funktion 'strrep' könnte für Sie nützlich sein. Sie tun folgendes, um das Umbenennen falscher Dateien zu vermeiden: 'subj002' ->' MODsubj014' .... Und am Ende löschen Sie den 'MOD' Teil –

+0

Danke! Strep war in der Tat die Lösung. –

Antwort

0

Wenn Sie die Teile des Dateinamens kennen, die Sie spezifisch ersetzen möchten, dh Sie wissen, dass subj001 = subj014, dann sollten Sie einen dir-Befehl verwenden, um die Liste der Dateien im vorhandenen Verzeichnis abzurufen. Dies wird Ihnen eine Liste der Dateien,

f=dir(imgData*.img) 
for somecounter=1:length(f) 

    filename=f(somecounter).name 

    newname=strrep(filename,'subj001','subj014') 
    movefile(filename,newname) 

end 

Offensichtlich sollten Sie eine Reihe von jedem der einzelnen Namen zu Setup durch, dass passen und iterieren.

+0

Danke. Ich wäre fast da, als du die Antwort gepostet hast. Das Movefile hat das für mich erledigt! –