`
ah_fu
  • 浏览: 227930 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

LINUX学习笔记:显示目录下的常规文件

阅读更多

源码:
//ListRegularFile.cpp  显示普通文件
#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <assert.h>
#include <string.h>

#ifdef _WIN32
    #define FLAG_FILE _S_IFREG
#else
    #define FLAG_FILE __S_IFREG
#endif

int main(int argc, char *argv[])
{
    if (2 != argc)
    {
        printf("Usage: ListFile SourceFolder\n");
        return 1;
    }
    DIR* pDir = NULL;
    struct dirent* ent = NULL;
    pDir = opendir(argv[1]);
    if (NULL == pDir)
    {
        printf("Source dir not exists!");
        return 1;
    }
    int nFolderLength = strlen(argv[1]);
    const int FILE_LENGTH = 1024;
    char FilePath[FILE_LENGTH];
    assert(nFolderLength<FILE_LENGTH);
    strncpy(FilePath, argv[1], nFolderLength);
    FilePath[nFolderLength] = '\0';
    int nFileNameLength;
    struct stat stFileInfo;
    while (NULL != (ent=readdir(pDir)))
    {
        //Copy File Name
        nFileNameLength = strlen(ent->d_name);
        assert(nFileNameLength + nFolderLength < FILE_LENGTH);
        strncpy(&FilePath[nFolderLength], ent->d_name, nFileNameLength);
        FilePath[nFolderLength + nFileNameLength] = '\0';
        //Check if is a file
        if (0 != stat(FilePath, &stFileInfo))
        {
            printf("\tGet file info failed!\n");
            continue;
        }
        if (stFileInfo.st_mode & FLAG_FILE)
        {
            printf("%s\n", ent->d_name);
        }
    }
    closedir(pDir);
    pDir = NULL;
    ent = NULL;
    return 1;
}

编译:
g++ -o ListRegularFile ListRegularFile.cpp
本程序也可以在WINDOWS下编译执行:g++ -o ListRegularFile.exe ListRegularFile.cpp

测试:
ListRegularFile ../

说明:
1、看#ifdef _WIN32处,WINDOWS下一些宏的定义和LINUX下不同
2、关于文件类型的定义,Linux下在<bits/stat.h>中,如下:
/* File types.  */
#define __S_IFDIR 0040000 /* Directory.  */
#define __S_IFCHR 0020000 /* Character device.  */
#define __S_IFBLK 0060000 /* Block device.  */
#define __S_IFREG 0100000 /* Regular file.  */
#define __S_IFIFO 0010000 /* FIFO.  */
#define __S_IFLNK 0120000 /* Symbolic link.  */
#define __S_IFSOCK 0140000 /* Socket.  */

分享到:
评论

相关推荐

    Linux学习笔记(强悍总结值得一看)_linux_linux学习笔记_

    这些命令包括`ls`(列出目录内容)、`cd`(切换目录)、`pwd`(显示当前工作目录)、`mkdir`(创建目录)、`rm`(删除文件或目录)、`cp`(复制文件或目录)、`mv`(移动或重命名文件或目录)、`cat`(查看文件内容...

    Debian linux学习笔记

    ### Debian Linux 学习笔记 #### 一、基本命令与目录结构 Debian Linux 是一个广泛使用的 Linux 发行版,其稳定性和安全性受到广大用户的认可。对于初学者来说,掌握 Debian Linux 的基本命令和目录结构至关重要。...

    linux运维笔记:最常用的150个命令.docx

    Linux运维笔记:最常用的150个命令 Linux运维笔记是系统管理员和开发者不可或缺的一部分,这篇笔记总结了最常用的150个Linux命令,涵盖文件和目录操作、查看文件及内容处理、文件压缩及解压缩、信息显示、搜索文件...

    Linux学习笔记Linux学习资料Linux教程

    【linux学习笔记--17】POSIX IPC——消息队列.doc 【linux学习笔记--18】POSIX IPC——信号量.doc 【linux学习笔记--19】POSIX IPC——共享内存.doc ...【linux学习笔记-6】文件IO操作--读写、重定向等.

    超详细linux学习笔记

    超详细linux学习笔记,【网络安全技术】,分享给大家。

    Linux学习笔记-超全总结值得一看(带标签目录)- 154页.pdf

    【Linux学习笔记】这篇超全总结涵盖了Linux操作系统的基础知识,特别是关于命令行的使用和快捷键,以及一些桌面环境下的快捷操作。以下是笔记中的主要内容: 1. **LINUX常用操作命令**: - `clear`:清空终端屏幕...

    linux运维学习笔记:企业Shell面试题总结-2.pdf

    linux运维学习笔记:企业Shell面试题总结-2

    Linux学习笔记.pdf

    根据提供的信息,《Linux学习笔记.pdf》是一份关于Linux操作系统的基础学习材料,主要涵盖了Linux的基本概念、文件系统特性、权限管理以及一些常用命令的使用方法。接下来,我们将详细解析这份文档中提到的重要知识...

    Linux学习笔记【博文整理系列】

    学习linux的笔记,发到博文了,鉴于文档方便保存和查阅,发出来,免费的哈 博文来自http://blog.csdn.net/wklken,共12篇,类似手册,可快速练习和查阅,容易上手 文档列表: Linux笔记——vim常用操作及扩展补充...

    Linux学习笔记

    ### Linux学习笔记 #### 常用命令及命令选项注释 **1. `ls`:显示文件** - `-a`:查看所有文件,包括隐藏文件。 - `-l`:查看详细信息。 - `-h`:人性化显示。 - `-d`:查看目录属性。 示例: ```bash ls -d ...

    Linux学习笔记 (华为工程师总结) 完整版PDF

    《Linux学习笔记》这份资料非常全面且详细,从 Linux 常用命令到 Linux 常用操作,再到网络管理、性能优化,几乎覆盖了 Linux 基础学习的方方面面,非常适合初学者入门!这里只是对于常用命令进行了整理,希望可以...

    linux学习笔记--很经典

    本篇“Linux学习笔记”详细介绍了Linux的基本目录结构及其各自的功能,这对于初学者理解Linux系统的核心概念非常重要。 #### 二、Linux目录结构解析 1. **/(根目录)** - 根目录是Linux文件系统的起点,所有的...

    非常宝贵的LINUX学习笔记

    【linux学习笔记-2】父子进程共享文件描述符 【linux学习笔记-3】文件操作(stat,chmod,umask) 【linux学习笔记-4】进程扇和进程链 【linux学习笔记-5】编写自己的ls命令 【linux学习笔记-6】文件IO操作--读写、...

    linux运维笔记:docker容器入门知识.docx

    linux运维笔记:docker容器入门知识

    linux学习笔记-01linux操作基础

    ### Linux学习笔记—01 Linux操作基础 #### 1. Linux 基础命令与用法 在Linux操作系统中,掌握一系列的基础命令是非常重要的。这些命令可以帮助用户进行各种日常操作,比如文件管理、目录切换、文件查看等。下面将...

    linux学习笔记.docx

    ### Linux系统结构与目录详解 #### 一、概述 Linux是一种免费使用和自由传播的类UNIX计算机操作系统的内核,其源代码可以免费获得。它诞生于1991年,由芬兰赫尔辛基大学的学生Linus Torvalds首次发布,并逐渐发展...

Global site tag (gtag.js) - Google Analytics