Scusa se questa ha una risposta altrove, non ho idea di come cercare il mio problema.
Stavo eseguendo alcune simulazioni su un server HPC Linux Redhat e il mio codice per la gestione della struttura delle cartelle per salvare l'output aveva un bug sfortunato. Il mio codice matlab per creare la cartella era:
folder = [sp.saveLocation, 'run_', sp.run_number, '/'];
dove sp.run_number
era un numero intero. Ho dimenticato di convertirlo in una stringa, ma per qualche motivo l'esecuzione mkdir(folder);
(in matlab) è comunque riuscita. In effetti, le simulazioni sono state eseguite senza intoppi e i dati sono stati salvati nella directory corrispondente.
Ora, quando la struttura delle cartelle viene interrogata / stampata ottengo le seguenti situazioni:
- Quando provo a tab completamento automatico:
run_ run_^A/ run_^B/ run_^C/ run_^D/ run_^E/ run_^F/ run_^G/ run_^H/ run_^I/
- Quando uso
ls
:run_ run_? run_? run_? run_? run_? run_? run_? run_? run_? run_?
. - Quando trasferisco sul mio mac usando rsync, l'
--progress
opzione mostra:run_\#003/
ecc. Con (presumo) il numero corrispondente all'intero insp.run_number
imbottito a tre cifre, quindi la decima corsa èrun_\#010/
- Quando visualizzo le cartelle nel finder vedo
run_ run_ run_ run_ run_ run_ run_ run_ run_ run_?
- Guardando questa domanda e usando il comando
ls | LC_ALL=C sed -n l
ottengo:
run_$
run_\001$
run_\002$
run_\003$
run_\004$
run_\005$
run_\006$
run_\a$
run_\b$
run_\t$
run_$
Non riesco a cd
entrare nelle cartelle usando nessuna di queste rappresentazioni.
Ho migliaia di queste cartelle, quindi dovrò risolverlo con uno script. Quale di queste opzioni è la rappresentazione corretta della cartella? Come posso fare riferimento programmaticamente a queste cartelle in modo da rinominarle con un nome correttamente formattato usando uno script bash? E immagino per curiosità, come diavolo è potuto succedere in primo luogo?
run_
e devo digitare qualcosa
/
. Qualsiasi altro personaggio è valido, inclusi i personaggi di controllo. Non so cosa avrebbe fatto matlab se sp.run_number fosse 0 (probabilmente si interrompeva con un errore o produceva run_
, poiché il byte NUL avrebbe terminato la stringa del nome della directory). Naturalmente, ciò sarebbe problematico anche per i valori a 16 bit (o superiori) che contenevano un byte NUL, e varierebbe anche in base all'endianità del sistema che esegue matlab.
^A
non è letteralmente^
seguito daA
, ma Ctrl-A (puoi digitarlo usando Ctrl-V Ctrl-A poiché Ctrl-A è generalmente una scorciatoia per la shell).