下面是一些简单的代码:
DIR* pd = opendir(xxxx);
struct dirent *cur;
while (cur = readdir(pd)) puts(cur->d_name);
我得到的有点乱:包括点 ( .
)、点-点 ( ..
) 和以 ~
结尾的文件名.
我想做与命令 ls
完全相同的事情.请问我该如何解决这个问题?
最佳答案
这是正常的。如果您执行 ls -a
(显示所有文件,ls -A
将显示除 .
和 ..< 之外的所有文件
),你会看到相同的输出。
.
是指向其所在目录的链接:foo/bar/.
与 foo/bar
相同。
..
是指向其所在目录的父目录的链接:foo/bar/..
与 foo
.
任何其他以 .
开头的文件都是隐藏文件(按照惯例,它并没有真正被任何东西强制执行;这与 Windows 不同,Windows 有一个真正的、官方的隐藏属性)。以 ~
结尾的文件可能是由您的文本编辑器创建的备份文件(同样,这是惯例,这些实际上可以是任何东西)。
如果您不想显示这些类型的文件,则必须明确检查并忽略它们。
关于c - 如何在 C 库中使用 opendir 和 readdir 忽略隐藏文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/845556/