「これはヤバかったな」という遅刻エピソード

debian 3.1でsambaサーバを運用して複数のwindowsでファイル共有をしています。

何の不自由もなく使用していましたが、debianのコンソール上で共有ディレクトリを見ると
日本語のファイル名が「??-{?.txt」などと表示されるのが気になり、
convmvというツールでファイル名の文字コード変換を行いました。(euc-jpとsjisをutf8へ)

ところが変換がうまくいかなかったらしく、コンソール上でもWindows上でも
ファイル名が文字化けしてしまいました。
上記のツールで戻すことができなかったためコンソール上でリネームしようとしたのですが、
ファイル名に「-」や「(」が含まれているため失敗してしまいます。

変換に失敗したファイル名を元に戻す方法があればご教授ください。
よろしくお願い致します。

A 回答 (4件)

ls のデフォルトだと「普通に表示できない」文字は全部 ? と表示してしまいます. なので,


ls -b で「実際の文字コード」を調べる
ls | cat で表示してみる
? 以外のメタキャラクタを全部 \ でクオートしてみる
くらいですかね.
    • good
    • 0
この回答へのお礼

お世話になります。

おかげさまで解決致しました。
すべて手作業でのリネームですが・・・

TeraTerm上で ls -b や ls | cat で表示されたものをコピー&ペーストしてもうまくいかない場合、
そのファイル名を変数に格納することでリネームに成功しました。

この度は回答者の皆様には大変お世話になりました。
ありがとうございました。

お礼日時:2006/02/14 14:53

# mount -t smbfs -o username=ユーザ名,password=パスワード,codepage=cp932,iocharset=utf8 //ホスト名/共有名 /mnt/マウントポイント


とか、やるんじゃないですか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
これはほかのlinux等でマウントするということでしょうか?
少し調べて試してみようと思います。

お礼日時:2006/02/10 14:20

どのような名前のファイルをどのように指定して, その結果どのようなエラーが出たのですか?


ひょっとして "??-{?.txt" などとはしていませんよね?
    • good
    • 0
この回答へのお礼

お世話になります。
"??-{?.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
という名前でした。
(ファイル自体は怪しいもの、違法なものではありません・・)

お礼日時:2006/02/10 14:05

「"」で囲めばうまくいかなかったかな?

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
「"」で囲っても駄目でした。「-」や「)」等は「"」より優先して解釈されるようです。
リネームをあきらめたとしても、削除すらできない状態です。。。

お礼日時:2006/02/08 18:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!