Ubuntu 多字文件名的习惯格式?

Customary format for multi-word filenames?


问题

对于包含多个单词的文件名,是否有一个首选/习惯性的格式化方式?还是说这是个人选择的问题?我正试图更多地使用命令行,如果这有什么不同的话。(我知道在命令行中,包含空格的文件名需要加引号)。

例如:

  • Change Of Address Cards.odt
  • ChangeOfAddressCards.odt
  • Change_Of_Address_Cards.odt
  • Change-Of-Address-Cards.odt
  • change-of-address-cards.odt

等等...

我认为这是个人的选择,除非是在公司或类似的环境中,对这种事情有政策规定。
@DKBose 这是个很好的资源。如果你能在回答中总结出突出的要点,那就太好了。
@user68186 我开始发表答案,但意识到我只是大量引用该资源,这样做不如阅读文章和作者的推理更有用。
答案1

我很少在终端输入完整的文件名。相反,我会导航到文件的父目录,有时会键入 ls 来显示该目录中包含哪些文件,然后键入文件的前几个字母,并通过按 Tab 键自动完成文件的全名。

遵循Ubuntu的座右铭 "Linux for human beings",文件名用什么格式并不重要,只要它对人类来说容易阅读。最容易阅读的格式是用空格分隔的普通文本。如果文件是一个系列的一部分,如专辑中的歌曲,我在文件名前加上它在系列中的序列号,如 nn track name ,其中 nn 以一个 0 开始,用于填充,如果轨道号只有一个数字,如 01 而不是 1 。这样,在 ls 和所有音频/视频设备的终端结果中, 1009 之后,而不是在 1 之后。

答案2

我基本同意 https://pclosmag.com/html/Issues/201607/page03.html
(由@ DK Bose 在评论中提供)

虽然有一些观点可以反对,但足够了。

基于从非常早期的PC开始建立的经验,当。

  • s 与众多计算机品牌和其他类型的设备共享文件,
  • s 编写脚本和编程
  • 与同事、同仁和朋友交换文件和数据
  • 加上避免许多方面和问题...

我已经将文件命名限制在这些字符集中:
a-zA-Z0-9-_
...附加的 . 被限制为任何文件扩展名的前导字符(或在Linux中作为 "隐藏文件 "指示器)。

答案3

为什么这么麻烦?

正确的问题是 你为什么要把多字文件名中的空格(可选择大写)转换成其他东西?

正常的桌面使用

如果你是一个使用LibreOffice来创建和编辑个人文档的桌面用户,那么我认为没有任何理由要改变。您可能只会使用LibreOffice中的 File > Open 对话框来打开文件。或者你可以使用Nautilus(Gnome Files)进入文件夹,双击一个文件来打开它。这些正常的日常活动不需要去除文件名中的空格(可以选择大写)。

如果你偶尔(或经常)与Windows或Mac用户分享这些文件,那么我也认为没有任何问题。所有现代操作系统都能处理文件名中的空格。我每天都会从Windows用户那里收到MSWord文件,这些文件的名称中有空格(和大写字母)。我在LibreOffice中打开它们,不需要对它们进行重命名。

命令行和脚本

如果你每天使用命令行或脚本来操作这些文件,那么使用其他答案中描述的一些惯例来转换它们可能是有意义的。如果你喜欢折磨自己,你可以随时输入

Change\ Of\ Address\ Cards.odt

在终端上。或者用引号把它括起来。

"Change Of Address Cards.odt"

如果你能自己写bash(或任何其他)脚本,那么你可能可以使脚本足够聪明,用引号来括住带空格的文件名。

在这种情况下,在文件名中使用空格和大写字母可能需要额外打字或更仔细地编写脚本,但可能不会成为问题。

如果你使用别人编写的脚本,而这些脚本不能很好地处理文件名中的空格和大写字母,那么你需要改变文件名。

基于网络的文件库

如果你正在建立一个基于网络的文件库,文件名将存储在数据库中,它们将作为网络URL被访问,那么如果你的名字中有空格和大写字母,可能是一个问题,因为URL不能很好地处理空格和大写字母。你使用的网络服务器可能会也可能不会为你进行转换。如果它不这样做,你肯定需要重新命名你的文件,你需要创建并遵守一个惯例以保持一致。

其他

可能还有其他情况,你可能想去掉文件名中的空格。在这些情况下,你的具体需求可能决定你需要遵循什么样的转换惯例。

希望这有帮助

相同问题还可以参考: Customary format for multi-word filenames?