Xin lỗi nếu điều này có câu trả lời ở nơi khác, tôi không biết làm thế nào để tìm kiếm vấn đề của mình.
Tôi đã chạy một số mô phỏng trên máy chủ HPC linux, và mã của tôi để xử lý cấu trúc thư mục để lưu kết quả đầu ra có một lỗi đáng tiếc. Mã MATLAB của tôi để tạo thư mục là:
folder = [sp.saveLocation, 'run_', sp.run_number, '/'];
trong đó sp.run_number
là một số nguyên. Tôi đã quên chuyển đổi nó thành một chuỗi, nhưng vì một số lý do, việc chạy mkdir(folder);
(trong matlab) vẫn thành công. Trong thực tế, các mô phỏng đã chạy mà không gặp trở ngại nào và dữ liệu đã được lưu vào thư mục phù hợp.
Bây giờ, khi cấu trúc thư mục được truy vấn / in, tôi nhận được các tình huống sau:
- Khi tôi cố gắng tự động hoàn thành tab:
run_ run_^A/ run_^B/ run_^C/ run_^D/ run_^E/ run_^F/ run_^G/ run_^H/ run_^I/
- Khi tôi sử dụng
ls
:run_ run_? run_? run_? run_? run_? run_? run_? run_? run_? run_?
. - Khi tôi chuyển sang máy Mac của mình bằng rsync,
--progress
tùy chọn hiển thị:run_\#003/
vv với (tôi giả sử) số khớp với số nguyên đượcsp.run_number
đệm thành ba chữ số, vì vậy lần chạy thứ 10 làrun_\#010/
- Khi tôi xem các thư mục trong công cụ tìm, tôi thấy
run_ run_ run_ run_ run_ run_ run_ run_ run_ run_?
- Nhìn vào câu hỏi này và sử dụng lệnh
ls | LC_ALL=C sed -n l
tôi nhận được:
run_$
run_\001$
run_\002$
run_\003$
run_\004$
run_\005$
run_\006$
run_\a$
run_\b$
run_\t$
run_$
Tôi không thể quản lý cd
vào các thư mục bằng cách sử dụng bất kỳ biểu diễn nào trong số này.
Tôi có hàng ngàn thư mục này, vì vậy tôi sẽ cần sửa nó bằng một tập lệnh. Lựa chọn nào trong số các tùy chọn này là đại diện chính xác của thư mục? Làm cách nào để tôi có thể tham khảo các thư mục này theo cách lập trình để tôi đổi tên chúng với tên được định dạng đúng bằng cách sử dụng tập lệnh bash? Và tôi đoán vì sự tò mò, làm thế nào trong địa ngục đã xảy ra ở nơi đầu tiên?
run_
và tôi phải gõ một cái gì đó
/
. Bất kỳ ký tự nào khác là hợp lệ, bao gồm các ký tự điều khiển. Tôi không biết matlab sẽ làm gì nếu sp.run_number bằng 0 (có thể hủy bỏ với lỗi hoặc tạo ra run_
, vì byte NUL sẽ chấm dứt chuỗi tên thư mục). Tất nhiên, điều này cũng có vấn đề đối với các giá trị 16 bit (hoặc cao hơn) có byte NUL trong đó và cũng sẽ thay đổi tùy theo mức độ cuối của hệ thống đang chạy MATLAB.
^A
không^
theo nghĩa đenA
, nhưng Ctrl-A (bạn có thể nhập nó bằng Ctrl-V Ctrl-A vì Ctrl-A thường là phím tắt cho trình bao).