c - 如何在 C 库中使用 opendir 和 readdir 忽略隐藏文件

标签 c unix file-io

下面是一些简单的代码:

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/

相关文章:

c - 在另一个字符串中查找字符串

c - 根据我的理解,我编写了一些代码,因为我只是在不同的地方更改增量,但它与递归的答案不同

unix - 当 esc 不起作用时,如何退出 vi 编辑器?

python - 需要从 Unix shell -> Python -> & 返回进行控制

C -- 文件输入读取问题

r - 读取 txt 文件的问题(引用字符串中的 EOF)

c - C 中求出未知数组的大小

linux - 如何在另一个文件夹中执行命令并返回到原始目录?

c# - 尝试 File.Move() 时处理打开的文件

C 编程,需要帮助理解一些概念