解決策 1:
*nix のファイル名で許可されていない唯一の文字は NUL
です と /
. Windows では NUL
のみ 、 :
、および \
は本当に許可されていませんが、多くのアプリはそれをさらに制限し、 ?
も防止しています 、 *
、 +
、および %
.
ファイル名にどの文字も必要ありません シェルによって解釈されないようにするために、必要な場合を除いてエスケープされます。
解決策 2:
ファイル名に関するウィキペディアの記事で、ファイル名の文字についての議論があります。
Unix/Linux/POSIX ファイル名の修正
この記事では、OS X と Windows XP を比較します:X vs. XP:ファイル名に使用できない文字 (PDF、pp 約 64-66 を参照)。
$1,000 アレックスのファイル名に含めるべきではないもの
禁止すべき文字がわからない -escaped.おそらく、「エスケープされていない」ではなく「エスケープされた」という意味です。最も一般的なものは、スペース、">"、"<" など、シェルが解釈するものです。それらの議論については、私がリンクした記事のいくつかを参照してください。
解決策 3:
次の文字のいずれかを使用して Windows でエクスプローラーを使用してファイルを作成すると、その文字が許可されていないというメッセージが表示されます:
\ / : * ? " < > |
良いリファレンスはここにあります:
ファイル、パス、名前空間の命名
http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx
Microsoft はさらに次のように述べています:
"... Windows ベースのデスクトップ プラットフォームでは、無効なパス文字には 1 から 31 までの ASCII/Unicode 文字、および引用符 (")、より小さい (<)、より大きい (>)、パイプ (|)、バックスペースが含まれる場合があります。 (\b)、ヌル (\0)、およびタブ (\t)。"
http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars.aspx
解決策 4:
Linux およびその他の POSIX 互換システムでは、「/」はディレクトリ区切り文字として予約されており、「\0」(NULL 文字) は文字列の末尾を示します。それ以外はすべて許可されます。