当前位置: 首页>>技术教程>>正文


files – 文件夹名称包含点 (.) 是一种不好的做法吗?带有多个点的文件名怎么样?

,

问题描述

有时,文件夹名称包含点 (.) 是有意义的。例如,您正在存储在 L=0.5 下进行的实验的数据。因此该文件夹可能被命名为:

experiment_L0.5

文件名可能会出现类似的问题。例如:

file_L0.5.txt

在 Ubuntu 中工作,这是不好的做法吗?与 Windows 用户共享这些目录怎么样?

最佳回答

据我所知,用单个或多个点命名文件夹和文件没有问题。

Ubuntu一般不使用点和三个字符(如.txt)来标识文件类型。所以这在 Ubuntu 环境中没有特殊意义。这在与 Windows 共享文件时很有用。 Ubuntu 在文件的前几个字节中使用幻数来识别文件类型。但是,如果点和三个字符扩展名可用于识别文件类型,Nautilus 会忽略幻数。该设置可以更改。参见Force nautilus to ignore extensions

在 Ubuntu 中,以点开头的文件或文件夹名称(例如 .experiment_L0.5 )会使文件或文件夹隐藏。您可以通过在 Nautilus 中按 Ctrl + H 来切换隐藏文件的显示。在 Windows 中,前面以 . 开头的文件名不会被隐藏。因此,如果您将名为 .experiment_L0.5 的隐藏文件传输到 Windows 系统中,它将清晰可见。

在 Ubuntu 中,文件名可以以点结尾,因为它末尾没有特殊含义。但是,在 Windows 中,文件名和扩展名之间用点分隔,不允许以点结尾但没有扩展名的文件名。当我尝试在 Windows 中创建这样的文件时,我得到的文件只有名称,没有点,没有扩展名。

参考:Wiki on Filenames

希望这可以帮助。

次佳回答

简短的回答

  • Windows 不允许使用以下字符:<>:"/\\|?* ( source )

  • 更多不鼓励使用的字符有:空格 和点 . ( source )\n\n

    • 当名称中有空格时,命令行工具会更难使用(更难,但并非不可能)

    • 点在正则表达式中使用(例如,当您想使用 grep 时)。在 Linux 中,按照惯例,前导点会使文件隐藏。在Windows中,点用于文件扩展名,用于文件类型检测。

  • Windows 也不允许文件名 CON、PRN、AUX、CLOCK$、NUL\nCOM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9\nLPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8 、LPT9。 (source)

  • 据我所知,Unix 文件系统中唯一不允许的字符是 / 和 null (空字节, \\0 )。

  • 另请参阅:File system limits(我不知道您想要兼容哪些Windows)。

长答案

技术背景:文件系统

Ubuntu 使用 ext4 文件系统。文件系统跟踪文件存储在底层存储(磁盘或SSD或其他)上的位置,所有者/组/其他形式的权限可以读/写/执行,时间戳,名称。

文件系统构造可用存储。第一个块称为 “superblock”。该块用于挂载文件系统。据我所知,每个现代文件系统都将其空间划分为块。我认为(我对此不太确定)大多数文件系统也有固定的块大小,尽管可以在创建文件系统时配置块大小。 ext4(以及 ext2 和 ext3)对文件和目录使用所谓的 “inodes”。这些 inode 包含指向其他块的指针(也可能是 inode 或 “data blocks”)。文件的 “first” inode 包含我上面提到的所有信息。

另一项信息是文件的 “type”。 “Type” 可以是:

  • 常规文件

  • 目录

  • 设备文件(块或字符设备)

事实上,您也可以使用编辑器打开目录:

vim /home

由于该目录不包含完整路径,而仅包含内容的名称,因此我看不出文件不能包含 / 的原因。我想这可能是为了方便。 (有人知道为什么不允许 / 吗?)

然而,对于其他文件系统来说情况有所不同。 FAT16 和FAT32 使用所谓的“文件分配表”。这意味着有一个表包含存储在文件中的所有文件,它们以单链表的形式从 “cluster” 开始,在哪个簇结束。

我想告诉您的重要事情是不允许的字符也可能取决于文件系统。

技术背景:文件类型

  • Windows 使用文件扩展名来检测文件类型

  • Linux 使用 “Magic Bytes” 来检测文件类型。 Magic Bytes 是文件内容的一部分,因此完全独立于名称。这些字节是文件类型规范的一部分(请参阅 png specification 作为示例)。它还使用具有相同魔术字节的文件的文件扩展名,例如 .txt.html(两者都是文本文件)。

Related

第三种回答

为了完整起见,仅由单个点 . 或两个点 .. 组成的名称是特殊的:

  • . 指当前目录

  • .. 指的是父目录

这些条目会自动添加并始终存在,因此您不能拥有名为 ... 的文件。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13907.html,未经允许,请勿转载。