Tôi có một loạt các thư mục và thư mục con chứa các tệp có ký tự đặc biệt, như tệp này:
robbie@phil:~$ ls test�sktest.txt
test?sktest.txt
Tìm thấy tiết lộ một chuỗi thoát:
robbie@phil:~$ find test�sktest.txt -ls
424512 4000 -rwxr--r-x 1 robbie robbie 4091743 Jan 26 00:34 test\323sktest.txt
Lý do duy nhất tôi thậm chí có thể gõ tên của họ trên bàn điều khiển là vì hoàn thành tab. Điều này cũng có nghĩa là tôi có thể đổi tên chúng theo cách thủ công (và loại bỏ ký tự đặc biệt).
Tôi đã đặt LC_ALL thành UTF-8, điều này dường như không có ích (cũng không phải trên vỏ mới):
robbie@phil:~$ echo $LC_ALL
en_US.UTF-8
Tôi đang kết nối với máy bằng ssh từ máy mac. Đây là bản cài đặt Ubuntu:
robbie@phil:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=7.10
DISTRIB_CODENAME=gutsy
DISTRIB_DESCRIPTION="Ubuntu 7.10"
Shell là Bash, TERM được đặt thành màu xterm.
Các tệp này đã tồn tại khá lâu và chúng chưa được tạo bằng cài đặt Ubuntu đó. Vì vậy, tôi không biết các cài đặt mã hóa hệ thống được sử dụng là gì.
Tôi đã thử mọi thứ dọc theo dòng:
find . -type f -ls | sed 's/[^a-zA-Z0-9]//g'
Nhưng tôi không thể tìm thấy một giải pháp làm mọi thứ tôi muốn:
- Xác định tất cả các tệp có các ký tự không thể phát (phần trên bỏ qua quá nhiều)
- Đối với tất cả các tệp trong cây thư mục (đệ quy), hãy thực hiện mv oldname newname
- Tùy chọn, khả năng chuyển ngữ các ký tự đặc biệt như ä thành một (không bắt buộc, nhưng sẽ rất tuyệt)
HOẶC LÀ
- Hiển thị chính xác tất cả các tệp này (và không có lỗi trong các ứng dụng khi cố gắng mở chúng)
Tôi có các bit và miếng, như lặp đi lặp lại trên tất cả các tệp và di chuyển chúng, nhưng xác định các tệp và định dạng chúng chính xác cho lệnh mv dường như là phần khó.
Bất kỳ thông tin bổ sung nào về lý do tại sao chúng không hiển thị chính xác hoặc cách "đoán" mã hóa chính xác cũng được hoan nghênh. (Tôi đã thử dùng convmv nhưng dường như nó không thực hiện chính xác những gì tôi muốn: http://j3e.de/linux/convmv/ )