Entschuldigung, wenn dies anderswo eine Antwort hat, ich habe keine Ahnung, wie ich nach meinem Problem suchen soll.
Ich habe einige Simulationen auf einem Red Hat Linux HPC-Server ausgeführt, und mein Code für die Verwaltung der Ordnerstruktur zum Speichern der Ausgabe wies einen unglücklichen Fehler auf. Mein Matlab-Code zum Erstellen des Ordners war:
folder = [sp.saveLocation, 'run_', sp.run_number, '/'];
wo sp.run_number
war eine ganze Zahl. Ich habe vergessen, es in eine Zeichenfolge umzuwandeln, aber aus irgendeinem Grund läuftmkdir(folder);
(in Matlab) immer noch erfolgreich. Tatsächlich liefen die Simulationen reibungslos und die Daten wurden im entsprechenden Verzeichnis gespeichert.
Jetzt, wenn die Ordnerstruktur abgefragt / gedruckt wird, erhalte ich die folgenden Situationen:
- Wenn ich versuche, automatisch zu vervollständigen:
run_ run_^A/ run_^B/ run_^C/ run_^D/ run_^E/ run_^F/ run_^G/ run_^H/ run_^I/
- Wenn ich benutze
ls
:run_ run_? run_? run_? run_? run_? run_? run_? run_? run_? run_?
. - Wenn ich mit rsync auf meinen Mac übertrage,
--progress
zeigt die Option:run_\#003/
etc. mit (ich nehme an) der Zahl, die mit der Ganzzahl in übereinstimmtsp.run_number
drei Ziffern aufgefüllt , also ist der 10. Laufrun_\#010/
- Wenn ich die Ordner im Finder ansehe, sehe ich
run_ run_ run_ run_ run_ run_ run_ run_ run_ run_?
- Wenn ich diese Frage betrachte und den Befehl verwende,
ls | LC_ALL=C sed -n l
bekomme ich:
run_$
run_\001$
run_\002$
run_\003$
run_\004$
run_\005$
run_\006$
run_\a$
run_\b$
run_\t$
run_$
Ich kann cd
mit keiner dieser Darstellungen in die Ordner gelangen.
Ich habe Tausende dieser Ordner, daher muss ich dies mit einem Skript beheben. Welche dieser Optionen ist die richtige Darstellung des Ordners? Wie kann ich programmgesteuert auf diese Ordner verweisen, um sie mithilfe eines Bash-Skripts mit einem ordnungsgemäß formatierten Namen umzubenennen? Und ich schätze aus Neugier, wie zum Teufel ist das überhaupt passiert?
run_
und ich muss etwas eingeben
/
. Jedes andere Zeichen ist gültig, einschließlich Steuerzeichen. Ich weiß nicht, was matlab getan hätte, wenn sp.run_number 0 gewesen wäre (wahrscheinlich entweder mit einem Fehler run_
abgebrochen oder erzeugt , da das NUL-Byte den Verzeichnisnamen-String beenden würde). Dies wäre natürlich auch problematisch für 16-Bit-Werte (oder höher), die ein NUL-Byte enthalten, und würde sich auch nach dem Endian des Systems richten, auf dem matlab ausgeführt wird.
^A
wird nicht wörtlich^
gefolgtA
, sondern Strg-A (Sie können es mit Strg-V Strg-A eingeben, da Strg-A im Allgemeinen eine Abkürzung für die Shell ist).