在 Ubuntu(Linux 一般行为) 上,readdir() 本身不区分大小写,是否区分大小写取决于 文件所在文件系统的类型。
readdir() 是“原样返回”readdir()(以及 getdents 系统调用)只是把目录里 存储的文件名原样返回,它不做任何大小写处理。
例如目录里有:
File.txt
file.txt
FILE.TXT
readdir() 会依次返回这三个名字,完全区分大小写。
Ubuntu 默认使用:
ext4xfsbtrfs这些文件系统 区分文件名大小写:
open("File.txt") != open("file.txt")
以下情况在 Ubuntu 上 可能不区分大小写:
这些文件系统本身 不区分大小写:
mount | grep vfat
例如 U 盘(FAT32):
abc.txt
ABC.TXT
在 Linux 下被视为 同一个文件。
注意:Linux 内核会在 VFS 层做大小写不敏感处理。
| 项目 | 是否区分大小写 |
|---|---|
readdir() 函数 |
❌ 不处理 |
| ext4 / xfs / btrfs | ✅ 区分 |
| FAT32 / exFAT / NTFS | ❌ 不区分 |
| Ubuntu 默认磁盘 | ✅ 区分 |
如果你是在写程序(C / C++ / Python / shell),我可以给你具体的示例或注意事项。