`

Linux系统编程 --- 如何列出一个目录下面的所有文件

    博客分类:
  • c++
阅读更多

 

   linux平台可以使用opendir函数来打开一个目录,用readdir读取目录当中的一个entry(一个entry可以是子目录,文件,软硬链接等),如果需要读取所有目录下面的文件,需要使用while((entry = readdir(dp))) 来读去每个entry,直到读取的entry == NULL。

      还有需要注意的就是目录打开之后,需要自己关闭的,可以调用closedir(DIR*)来关闭,这个和文件fd的操作非常类似,不会的同学可以参考标准的stdio文件操作。

      下面代码是从wiki上面摘过来的, listdir扮演了打印指定目录下面所有文件的功能,类似于linux命令"ls"的功能。

 

/**************************************************************
 * A simpler and shorter implementation of ls(1)
 * ls(1) is very similar to the DIR command on DOS and Windows.
 **************************************************************/
#include <stdio.h>
#include <dirent.h>
int listdir(const char *path) {
  struct dirent *entry;
  DIR *dp;
  dp = opendir(path);
  if (dp == NULL) {
    perror("opendir");
    return -1;
  }
  while((entry = readdir(dp)))
    puts(entry->d_name);
  closedir(dp);
  return 0;
}
int main(int argc, char **argv) {
  int counter = 1;
  if (argc == 1)
    listdir(".");
  while (++counter <= argc) {
    printf("\nListing %s...\n", argv[counter-1]);
    listdir(argv[counter-1]);
  }
  return 0;
}

 c++编程网

分享到:
评论

相关推荐

    Linux系统编程笔记.pdf

    本资源摘要信息涵盖了 Linux 系统编程的基础知识点,包括 Linux 命令基础习惯、类 Unix 系统目录结构、目录和文件操作等方面。 一、Linux 命令基础习惯 在 Linux 系统中,掌握基本命令的使用是非常重要的。这些...

    linux proc 文件系统 编程手册

    Linux的`/proc`文件系统是操作系统内核与用户空间之间的一个重要接口,它提供了一种方式来查看和控制运行中的内核状态。这个编程手册是针对初学者的,将帮助你理解如何利用`/proc`来获取系统信息、监控性能以及进行...

    Linux指令/系统编程

    在Linux系统中,/etc/shells文件中列出了所有支持的shell。 二、 文件系统 Linux系统中的文件系统是一种层次结构,它将所有文件和目录组织在一起。文件系统的根目录是/,它包含了所有的文件和目录。Linux系统中的...

    linux系统管理员试题答案

    - `ls`: 列出目录内容,`ls -l`显示详细信息。 - `mkdir`/`rmdir`: 创建和删除目录。 - `touch`: 创建新文件。 - `cp`/`mv`: 文件和目录的复制与移动。 - `rm`: 删除文件或目录,小心使用 `-rf` 参数以防误删。...

    一学期 - LINUX系统编程及应用开发技术

    根据提供的文件信息,标题与描述均指向了一个关于Linux系统编程及应用开发技术的一学期课程。虽然没有具体的文本内容,但从标题和描述中可以推断出该课程主要涵盖Linux操作系统的基本概念、核心特性以及如何在该平台...

    Linux系统编程笔记1

    在Linux中,每个文件和目录都有一个所有者和所属组。可以通过`passwd`和`grouplist`命令来管理用户密码和用户组信息。例如,`useradd`和`groupadd`用于创建新的用户和用户组,而`usermod`和`groupmod`则用于修改用户...

    Linux 系统 命令大全---(修改版)

    - `ls`:列出目录内容,常用于查看当前工作目录下的文件和子目录。 - `cd`:改变目录,用于切换当前工作目录。 - `pwd`:显示当前工作目录,帮助用户确认所在位置。 - `touch`:创建新文件或更新文件时间戳。 -...

    Linux操作系统基础教程.pdf

    - **硬链接**:多个链接指向同一个inode,文件内容相同,修改一个会影响所有链接。 - **软链接(符号链接)**:类似于Windows的快捷方式,指向另一个文件的位置。 6. **磁盘挂载**: - **mount**:挂载文件系统...

    linux编程SHELL编程实验报告

    在详细设计步骤中,需要使用Shell编程语言编写一个程序,该程序的功能是将某目录下面所有的文件名后面加上所有者的名字,例如a.txt的所有者为owner,修改后为a[owner].txt文件。该程序需要满足以下基本要求: 1. ...

    linux内核编程.pdf

    - `/proc/modules`:列出当前加载的所有模块。 - `/proc/meminfo`:提供内存使用情况信息。 - `proc_register_dynamic`:注册动态创建的`/proc` 文件。 ### Linux内核版本信息 了解Linux内核版本信息对于内核编程...

    linux shell 编程入门

    例如,`touch myfile` 将在当前目录下创建一个名为 `myfile` 的空文件。 2. **`ls -l` 命令**:列出当前目录下所有文件的详细信息,包括权限、所有者、大小和最后修改时间等。例如,`ls -l myfile` 可以显示 `...

    Linux-期末考试试题8套(含答案)

    如果要列出一个目录下的所有文件需要使用命令行 (C)。** - **知识点:文件列表** - **ls -a**:列出目录下所有文件,包括隐藏文件。 **9. 哪个命令可以将普通用户转换成超级用户 (D)** - **知识点:用户切换** -...

    linux 系统命令 ls -l命令的实现

    在Linux操作系统中,`ls` 是一个非常基础且常用的命令,用于列出目录中的文件和子目录。`ls -l` 命令是其一种扩展形式,提供了更详细的信息展示,包括文件权限、所有者、组、大小、修改日期以及文件或链接的名称。这...

    LINUX-normal-command-set.zip_normal

    - `ls`:列出目录内容。 - `cd`:切换当前工作目录。 - `mkdir`/`rmdir`:创建/删除目录。 - `touch`:创建新文件或更新文件时间戳。 - `cp`/`mv`:复制/移动文件或目录。 - `rm`:删除文件或目录(小心使用,...

    Linux系统编程 gcc,gdb,Makefile,文件,多进程.zip

    常用命令包括`ls`列出目录内容,`cd`改变当前目录,`touch`创建新文件,`mv`移动或重命名文件,`rm`删除文件,`cp`复制文件。此外,还有`chmod`更改文件权限,`chown`改变所有者,`chgrp`修改所属组。 5. 多进程: ...

    c++操作系统仿linux二级文件管理系统实用.pdf

    该文件描述的是一个使用C++实现的简易操作系统,其设计灵感来源于Linux,主要功能包括用户登录、文件及目录的管理。这个系统模拟了Linux中的一些基本操作,如创建、删除、重命名文件和目录,以及切换目录等。下面...

    linux编程学习笔记PDF资料下载.txt

    - `ls`:列出目录内容; - `cd`:切换当前工作目录; - `mkdir`:创建目录; - `rm`:删除文件或目录; - `cp`:复制文件或目录; - `mv`:移动文件或目录(也可以用于重命名); - `grep`:搜索文本文件中的...

    Linux操作系统的基本命令

    Linux操作系统是基于Unix的一款...了解并熟练掌握这些命令是Linux系统管理的基础,能帮助你更有效地操作和维护Linux系统。随着经验的积累,你还可以学习更多高级的Linux技术,如shell脚本编程、系统监控和性能优化等。

Global site tag (gtag.js) - Google Analytics