このファイルのように、特殊文字を含むファイルを含む多数のディレクトリとサブディレクトリがあります。
robbie@phil:~$ ls test�sktest.txt
test?sktest.txt
Findはエスケープシーケンスを明らかにします:
robbie@phil:~$ find test�sktest.txt -ls
424512 4000 -rwxr--r-x 1 robbie robbie 4091743 Jan 26 00:34 test\323sktest.txt
コンソールで名前を入力できる唯一の理由は、タブ補完のためです。これはまた、それらの名前を手動で変更できることを意味します(そして特殊文字を削除します)。
LC_ALLをUTF-8に設定しましたが、これは役に立たないようです(また、新しいシェルではありません):
robbie@phil:~$ echo $LC_ALL
en_US.UTF-8
Macのsshを使用してマシンに接続しています。Ubuntuのインストールです。
robbie@phil:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=7.10
DISTRIB_CODENAME=gutsy
DISTRIB_DESCRIPTION="Ubuntu 7.10"
シェルはBashで、TERMはxterm-colorに設定されています。
これらのファイルはかなり前から存在しており、Ubuntuのインストールを使用して作成されていません。そのため、システムエンコーディング設定が以前は何であったかはわかりません。
私は次のラインに沿って物事を試しました:
find . -type f -ls | sed 's/[^a-zA-Z0-9]//g'
しかし、私は私が望むすべてを行うソリューションを見つけることができません:
- 表示できない文字を含むすべてのファイルを識別します(上記はあまりにも多くの方法を無視します)
- ディレクトリツリー内のすべてのファイルに対して(再帰的に)、mv oldname newnameを実行します
- オプションで、äなどの特殊文字を音訳する機能(必須ではありませんが、素晴らしいです)
または
- これらのすべてのファイルを正しく表示します(ファイルを開こうとしたときにアプリケーションでエラーが発生しません)
私はすべてのファイルを繰り返して移動するなどの断片を持っていますが、mvコマンド用にファイルを識別して正しくフォーマットすることは難しい部分のようです。
それらが正しく表示されない理由、または正しいエンコーディングを「推測」する方法に関する追加情報も歓迎します。(私はconvmvを試しましたが、それは私が望むものを正確に行っていないようです:http ://j3e.de/linux/convmv/ )