Saya memiliki banyak direktori dan subdirektori yang berisi file dengan karakter khusus, seperti file ini:
robbie@phil:~$ ls test�sktest.txt
test?sktest.txt
Temukan mengungkapkan urutan pelarian:
robbie@phil:~$ find test�sktest.txt -ls
424512 4000 -rwxr--r-x 1 robbie robbie 4091743 Jan 26 00:34 test\323sktest.txt
Satu-satunya alasan saya bahkan dapat mengetik nama mereka di konsol adalah karena penyelesaian tab. Ini juga berarti saya dapat mengganti nama secara manual (dan menghapus karakter khusus).
Saya telah mengatur LC_ALL ke UTF-8, yang sepertinya tidak membantu (juga tidak pada shell baru):
robbie@phil:~$ echo $LC_ALL
en_US.UTF-8
Saya terhubung ke mesin menggunakan ssh dari mac saya. Ini adalah instalasi Ubuntu:
robbie@phil:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=7.10
DISTRIB_CODENAME=gutsy
DISTRIB_DESCRIPTION="Ubuntu 7.10"
Shell adalah Bash, JANGKA diatur ke warna xterm.
File-file ini telah ada di sana cukup lama, dan mereka belum dibuat menggunakan instalasi Ubuntu itu. Jadi saya tidak tahu apa pengaturan sistem pengkodean dulu.
Saya sudah mencoba beberapa hal di sepanjang baris:
find . -type f -ls | sed 's/[^a-zA-Z0-9]//g'
Tetapi saya tidak dapat menemukan solusi yang melakukan semua yang saya inginkan:
- Identifikasi semua file yang memiliki karakter yang tidak dapat diputar (terlalu banyak mengabaikan hal di atas)
- Untuk semua file di pohon direktori (secara rekursif), jalankan mv oldname newname
- Secara opsional, kemampuan untuk mentransliterasi karakter khusus seperti ä ke (tidak diperlukan, tetapi akan luar biasa)
ATAU
- Tampilkan semua file ini dengan benar (dan tidak ada kesalahan dalam aplikasi saat mencoba membukanya)
Saya punya bit dan potongan, seperti iterasi semua file dan memindahkannya, tetapi mengidentifikasi file dan memformatnya dengan benar untuk perintah mv tampaknya menjadi bagian yang sulit.
Setiap informasi tambahan tentang mengapa mereka tidak ditampilkan dengan benar, atau bagaimana "menebak" pengkodean yang benar juga diterima. (Saya sudah mencoba convmv tetapi sepertinya tidak melakukan apa yang saya inginkan: http://j3e.de/linux/convmv/ )