文件名中允许的字符

pyt*_*ude 118 filenames special-characters

在哪里可以找到文件名中允许的字符列表,具体取决于操作系统?(例如在Linux上,字符:在文件名中是允许的,但在Windows上不允许)

pax*_*blo 94

您可以从Wikipedia Filename页面开始.它有一个相当不错的表(文件名限制比较),列出了很多文件系统的保留字符.

以及保留的文件名本身就像CON在MS-DOS下一样.我记得当我将包含文件从缩短const.hcon.h半小时并且花了半个小时来弄清楚编译器挂起的原因时,我被它咬了一口.原来DOS忽略扩展设备,这样con.h是完全一样的con,输入控制台(意思,当然,编译器在等着我来键入头文件之前,它将继续).

  • 可能你需要的只是查看`POSIX'完全可移植的文件名"`条目,其中列出了这些:`A-Z a-z 0-9._ -` (46认同)
  • @python,不要看那张桌子,看看下面的那个大牌(名为"文件名限制比较").它的内容并不那么模糊. (6认同)
  • 我发现维基百科页面有点模糊和混乱,例如"某些操作系统禁止某些特定字符......".我实际上正在寻找一个完整的表格,列出所有允许和不允许的字符. (3认同)
  • @CpILL 请注意,# 必须在 Web 上下文中进行 urlencoded,否则会破坏 URL,因为 URL 中的 # 表示哈希片段的开始。不需要对 POSIX“完全可移植文件名”进行 urlencoded。即使您关心的所有操作系统都允许在文件名中使用 # 字符,出于某些您尚未考虑的其他原因,您最好只允许“可移植”字符。 (2认同)
  • @VladimirKornea 问题指出“取决于操作系统”而不是 URL。在任何情况下,您都应该始终通过 url 编码器/解码器传递您的文件名。 (2认同)

Dev*_*vid 21

在Windows操作系统上创建一个文件,并\在文件名中给它一个无效字符.因此,您将获得一个包含文件名中所有无效字符的弹出窗口.

在此输入图像描述


CpI*_*ILL 20

好的,如果你只关心主要的播放器文件系统,那么看一下文件系统的比较:

  • 视窗(FAT32,NTFS):除任何Unicode NUL,\,/,:,*,",<,>,|
  • Mac(HFS,HFS +):除:or 之外的任何有效Unicode/
  • Linux(ext [2-4]):除了NUL或之外的任何字节/

因此除任何字节NUL,\,/,:,*,",<,>,|,你不能有文件/文件夹打电话...没有控制字符(当然).

  • 这是不正确的.Linux不允许`/`.Windows不允许使用反斜杠和一些字符串(例如`CON`). (7认同)
  • 是的,因此我说*除外*。 (4认同)
  • 在路径中使用 %$# 将导致 bash 脚本出现问题 (cd $mydir) 在路径中使用 % 将导致 Windows 脚本出现问题 (cd %1) (4认同)
  • 在Mac(运行HFS +)上,我能够创建名称中带有`:`s的文件。 (2认同)

小智 5

更准确地说/,Finder 中的Mac OS X(现在称为 MacOS)被解释为:Unix 文件系统。

当 Apple 从 Classic Mac OS 迁移时,这样做是为了向后兼容。

/在 Finder 中的文件名中使用 a 是合法的,在终端中查看同一个文件,它会显示一个:.

它也可以反过来工作:您不能/在终端的文件名中使用 a ,但 a:可以,并且会/在 Finder 中显示为 a 。

某些应用程序可能更严格,禁止使用这两个字符以避免混淆,或者因为它们保留了以前经典 Mac OS 的逻辑或平台之间的名称兼容性。