- ベストアンサー
日本語ファイル名の文字化けについて
debian 3.1でsambaサーバを運用して複数のwindowsでファイル共有をしています。 何の不自由もなく使用していましたが、debianのコンソール上で共有ディレクトリを見ると 日本語のファイル名が「??-{?.txt」などと表示されるのが気になり、 convmvというツールでファイル名の文字コード変換を行いました。(euc-jpとsjisをutf8へ) ところが変換がうまくいかなかったらしく、コンソール上でもWindows上でも ファイル名が文字化けしてしまいました。 上記のツールで戻すことができなかったためコンソール上でリネームしようとしたのですが、 ファイル名に「-」や「(」が含まれているため失敗してしまいます。 変換に失敗したファイル名を元に戻す方法があればご教授ください。 よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ls のデフォルトだと「普通に表示できない」文字は全部 ? と表示してしまいます. なので, ls -b で「実際の文字コード」を調べる ls | cat で表示してみる ? 以外のメタキャラクタを全部 \ でクオートしてみる くらいですかね.
その他の回答 (3)
- initialk
- ベストアンサー率58% (10/17)
# mount -t smbfs -o username=ユーザ名,password=パスワード,codepage=cp932,iocharset=utf8 //ホスト名/共有名 /mnt/マウントポイント とか、やるんじゃないですか?
お礼
ご回答ありがとうございます。 これはほかのlinux等でマウントするということでしょうか? 少し調べて試してみようと思います。
- Tacosan
- ベストアンサー率23% (3656/15482)
どのような名前のファイルをどのように指定して, その結果どのようなエラーが出たのですか? ひょっとして "??-{?.txt" などとはしていませんよね?
お礼
お世話になります。 "??-{?.txt"と指定しました。 「'」でも試してみましたが、エラーが出ます。 以下、実際にあるファイルでの結果です。 $ mv Opera_?$B%i%$%;%s%9%-!<?(B.txt abc.txt -bash: !<?(B.txt abc.txt: event not found $ mv "Opera_?$B%i%$%;%s%9%-!<?(B.txt" abc.txt -bash: !<?(B.txt" abc.txt: event not found $ mv 'Opera_?$B%i%$%;%s%9%-!<?(B.txt' abc.txt mv: cannot stat `Opera_?$B%i%$%;%s%9%-!<?(B.txt': そのようなファイルやディレクトリはありません 「'」で囲って指定することで特殊文字もファイル名の一部として認識しているようです。 しかし「ファイルがない」と言って来ることから、 表示されているファイル名と実際のファイル名が違うのではと考えています。 ターミナルソフト側の表示設定も変えてみましたが、 実際のファイル名は表示されないようです。 ・Opera_?$B%i%$%;%s%9%-!<?(B.txt これはもともと、 ・Opera_ライセンスキー.txt という名前でした。 (ファイル自体は怪しいもの、違法なものではありません・・)
- parapara777
- ベストアンサー率16% (39/239)
「"」で囲めばうまくいかなかったかな?
お礼
ご回答ありがとうございます。 「"」で囲っても駄目でした。「-」や「)」等は「"」より優先して解釈されるようです。 リネームをあきらめたとしても、削除すらできない状態です。。。
お礼
お世話になります。 おかげさまで解決致しました。 すべて手作業でのリネームですが・・・ TeraTerm上で ls -b や ls | cat で表示されたものをコピー&ペーストしてもうまくいかない場合、 そのファイル名を変数に格納することでリネームに成功しました。 この度は回答者の皆様には大変お世話になりました。 ありがとうございました。