两个点 (..) 或两个破折号 (--) 作为文件和目录名称中的分隔符

两个点 (..) 或两个破折号 (--) 作为文件和目录名称中的分隔符

使用双点或双减号作为分隔符是个好主意吗?我正在尝试为实验科学数据找到一个好的命名约定。例如:

2017-12-11T19-45..JDoe-042..UO2(NO3)2-EtOAc_dist..150.3K..1.234mM.dat
2017-12-11T19-45--JDoe-042--UO2(NO3)2-EtOAc_dist--150.3K--1.234mM.dat

我的理由:

  1. 为了确保跨平台的兼容性,唯一合适的字符是_ - .及其组合;
  2. 就我而言,它们都不能单独使用:
    • _预留空间;由于化学公式区分大小写,我无法使用驼峰命名法。
    • -:通常是内部实验室代码的一部分,而且它还被用作时间(修改后的 ISO 8601 表示法)和比率的 冒号的替代品;
    • .是小数点。
  3. 在它们的组合中最受欢迎的是,它似乎, 是_-_。然而,这是 3 个字符,而且文件名已经相当长(从示例中可以看出),所以如果可能的话,我想坚持使用两个字符。
  4. 从视觉上看,我发现很难快速区分__和之间的区别_,而--vs-.vs..对我来说很容易区分。
  5. 我没有包含逗号,(正如评论中所正确建议的那样,这也是一个值得考虑的可行字符),因为我认为很容易将其与单个点混淆.,该点已经主要为带有 a 的数值保留小数点。

根据SE网络上的几个帖子,例如

我认为 和--都是..完全可以接受的,我正在考虑最终选择..。但是,我不确定,特别是关于正则表达式或 python 脚本如何处理这些文件和文件夹(我对两者的经验很少,但我正在学习)。

不考虑专用软件的行为,您是否认为这些分隔符对于常见文件系统和脚本语言通常是安全的?

答案1

比较多的其中之一Unix/Linux 中经过审查和事后猜测的设计决策是一个对您有利的文件系统功能:文件/目录名称中允许使用任何字符,除了零点 \0(ASCII 000)和削减 /(后者被保留用于文件路径)。

符合 POSIX 和/或编写良好的程序和脚本将处理这种宽大处理,但不幸的是,有无数的例子不能处理。然而,它们倾向于吐出一组非常特殊的字符,而这些字符不是点或破折号。 (空格和换行符是最麻烦的两个。)事实上,点和破折号的使用非常广泛。通用工具、语言和正则表达式可以很好地处理它们......

...但有一点例外。(当然,对吧?)我没有看到任何迹象表明您打算这样做,但应该注意:避免在名称开头使用破折号。当然,这是合法的,但是存在太多程序会不正确地处理这些名称,导致它们被解释为命令行选项/标志。例如,如果一个脚本将文件名传递给另一个脚本,如下所示:some-script --my-dash-first-file ...那么看到类似Unknown option '--my-dash-first-file'.

长话短说您提出的方案是安全的如果你避免使用这样的名字开始带破折号。

额外的警告:虽然点本身很常见,特别是为了将文件的基本名称与其“扩展名”分开(例如foo.txt),但成对的点通常单独出现......它们具有特殊含义:当前的父目录目录 ( ..) 或路径 ( /foo/bar/../baz) 中的前一个目录。因此,虽然这不会导致任何技术问题,但名称中的双点有点不合常规,可能会导致一些用户犹豫不决。


相关内容