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

Make new folder 'mkdir' in Linux?

 

bruce1973

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2015, 18:50     Titel: Make new folder 'mkdir' in Linux?
  Antworten mit Zitat      
Hi,

ich habe eine Frage zum Befehl mkdir aber in Linux.
Mein Programm lautet:
Code:

folder = get_folder_name;
system(['mkdir.\' folder]);
system(['move *.csv .\' folder]);
system(['xcopy .\' folder '\SimuPoi.csv .\']);
 

So steht es in meinem Programm und läuft auch einwandfrei in Windows, wenn ich das ganze aber in Linux ausführe kriege ich die Fehlermeldung:
Code:

/bin/bash: mkdir.150630_Results: command not found
 

und er bricht an dem Punkt ab.

Ich weiß schon das aus 'move' (Windows) 'mv' (Linux) und aus 'xcpoy' (Windows) 'cp' (Linux) wird, nur mit dem mkdir stehe ich irgendwie auf dem Schlauch.
Wer die Antwort kennt bite sagen Wink


Harald
Forum-Meister

Forum-Meister


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

warum so umständlich über system?
mkdir , movefile und copyfile sind MATLAB-Befehle, mit denen du all das direkt machen kannst.

Ein Problem unter Linux dürfte sein, dass dort das Pfadtrennzeichen / ist.
Um den Code flexibel zu halten, dürften filesep und fullfile hilfreich sein.

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: 01.07.2015, 10:32     Titel: Re: Make new folder 'mkdir' in Linux?
  Antworten mit Zitat      
Hallo bruce1973,

Haralds Vorschlag ist sehr gut: Verwende die dazugehörigen Matlab-Funktionen.

Aber zu Deinem Code:
Code:
folder = get_folder_name;
system(['mkdir.\' folder]);

ERROR: /bin/bash: mkdir.150630_Results: command not found

Wie Du in der Fehlermeldung siehst, fehlt hier ein Leerzeichen nach dem mkdir Befehl.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
bruce1973

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2015, 13:35     Titel:
  Antworten mit Zitat      
Hi Harald, Hi Jan,

danke für eure Antworten!
Ich habe mittlerweile eine Lösung gefunden, dabei hat mir der Tipp mit 'filesep' sehr geholfen auch das fehlende Leerzeichen war gut!
Code:

if strcmp('/',filesep)
    system(['mkdir .' filesep folder]);
    system(['mv *.csv ./' folder]);
else
    system(['mkdir .\' folder]);
    system(['move *.csv .\' folder]);
end
 

So sieht es aus und funktioniert auch, ich habe zwar immer noch das system mit drin aber das stört nun durch die if-Abfrage nicht mehr.

Grüße, bruce Wink
 
bruce1973

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.07.2015, 11:25     Titel:
  Antworten mit Zitat      
Für alle mit dem selben Problem, das war gerade nicht so ausführlich erklärt.

Es ist wichtig zu wissen, das Windows und Linux unterschiedliche Pfadtrennzeichen besitzen, d.h. wo eine Datei gespeichert ist z.Bsp.:
C:\MATLAB\R2012b\toolbox\compiler

Bei Windows ist das Pfadtrennzeichen: \
bei Linux: /
Deshalb kann man bei Matlab mit der If-Abfrage:
Code:

sehr leicht unterscheiden im welchen System man sich befindet.
Da Matlab selbst erkennt welche Pfadtrennzeichen nun aktuell benutzt wird, je nachdem ob man Windows oder Linux benutzt.

Ich hoffe das war jetzt verständlicher und viel Spaß euch allen mit Matlab Wink
 
Harald
Forum-Meister

Forum-Meister


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

oft kann man durch die direkte Verwendung von fullfile oder filesep Fallunterscheidungen vermeiden.

Wenn man das System bestimmen möchte, sind Befehle wie computer , ispc , ismac , isunix der direktere Weg.

Grüße,
Harald
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.