Filenames

兩個點 (..) 或兩個破折號 (–) 作為文件和目錄名稱中的分隔符

  • December 19, 2017

使用雙點或雙減號作為分隔符是個好主意嗎?我正在嘗試為實驗科學數據找到一個好的命名約定。例如:

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. 在我的情況下,它們都不能單獨使用
  • _為空間預留;由於區分大小寫的化學公式,我不能使用 camelCase。
  • -通常是內部實驗室程式碼的一部分,此外,它還被用作冒號的替代品:(修改後的 ISO 8601 符號)和比率;
  • .是一個小數點。
  1. 在他們的組合中,最流行的似乎_-_. 但是,這是 3 個字元,並且文件名已經很長(從範例中可以看出),所以如果可能的話,我想堅持使用兩個字元。
  2. 從視覺上我發現很難快速區分__and _,而--vs-.vs..對我來說很容易區分。
  3. 我沒有包括逗號,(正如評論中正確建議的那樣,這也是一個值得考慮的可行字元),因為我認為它很容易與一個 dot 混淆.,它已經主要用於帶有 a 的數值小數點。

根據 SE 網路上的幾個文章,例如

我會假設兩者--都是..完全可以接受的,我正在考慮最終選擇... 但是,我不確定,尤其是關於正則表達式或 python 腳本如何處理這些文件和文件夾(我對這兩者的經驗都很少,但我正在學習)。

不考慮專用軟體的行為,您會說這些分隔符對於常見的文件系統和腳本語言通常是安全的嗎?

在 Unix/Linux 中,一個經過仔細審查和猜測的設計決策之一是對您有利的文件系統功能:除了NUL \0 (ASCII 000) 和斜杠 /(後者是為文件路徑保留)。

POSIX 兼容和/或編寫良好的程序和腳本將處理這種寬容,但不幸的是,有無數的例子沒有。然而,他們往往會吐槽一組非常特殊的字元,而這些字元不是點或破折號。(空格和換行符是最麻煩的兩個。)事實上,點和破折號的使用非常廣泛。常用工具、語言和正則表達式可以很好地處理它們……

除了一個小小的例外。(當然,對嗎?)我沒有看到任何跡象表明您打算這樣做,但應該注意:避免在名稱開頭使用破折號。當然,這是合法的,但是存在太多程序會不正確地處理這些名稱,從而導致它們被解釋為命令行選項/標誌。例如,如果一個腳本像這樣將文件名傳遞給另一個腳本:some-script --my-dash-first-file ...那麼看到類似Unknown option '--my-dash-first-file'.

TL;DR如果您避免使用以破折號開頭的名稱,您提出的方案是安全的。

額外的注意事項:雖然點本身很常見,特別是為了將文件的基本名稱與其“副檔名”(例如foo.txt)分開,但成對的點通常單獨出現……它們具有特殊含義:目前的父目錄目錄 ( ..) 或路徑 ( /foo/bar/../baz) 中的前一個目錄。因此,雖然這不會導致任何技術問題,但名稱中的雙點有點不合正常,可能會導致一些使用者重複使用。


引用自:https://unix.stackexchange.com/questions/410048