質問: Windows Vista + cygwin環境下にて、 『07.テキスト管理表』といった特定の日本語の文字を含んだ ディレクトリまたはファイルをcp,あるいはrsyncしようとすると、 cannot stat `ファイル名またはディレクトリ名` Not found directory or file. とエラーになります。 日本語を別の文字に変えた場合はエラーが出ないため、原因の特定が難しくなっております。 このような場合、どのようにすればエラーを出すことなく日本語を含んだファイル操作を行えるのでしょうか?
回答: 円マーク問題として知られているトラブルです。 Windowsのファイル名の実体はシフトJISコードで格納されています。 "07.テキスト管理表" の "表" は、シフトJISコードで 955C です。 ここで、5C はASCIIコードで \ (円マークまたはバックスラッシュ)に当たります。 つまり、ディレクトリ区切り文字と同じ \ なのです。 さらに、95 は ASCII コードに存在しない文字です。 このため cygwin は "07.テキスト管理表" を "07.テキスト管理?\" というディレクトリ(?は判別できない半角1文字)として認識し、ご質問にあるようなエラーになるわけです。 対処策としては、5C を含まない全角文字を使うしかありませんが、これをいちいちチェックするのは大変です。 cygwin でアクセスするファイル/ディレクトリは英数字に限定した方が無難だと思います。