源码:
//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. */
分享到:
相关推荐
这些命令包括`ls`(列出目录内容)、`cd`(切换目录)、`pwd`(显示当前工作目录)、`mkdir`(创建目录)、`rm`(删除文件或目录)、`cp`(复制文件或目录)、`mv`(移动或重命名文件或目录)、`cat`(查看文件内容...
### Debian Linux 学习笔记 #### 一、基本命令与目录结构 Debian Linux 是一个广泛使用的 Linux 发行版,其稳定性和安全性受到广大用户的认可。对于初学者来说,掌握 Debian Linux 的基本命令和目录结构至关重要。...
Linux运维笔记:最常用的150个命令 Linux运维笔记是系统管理员和开发者不可或缺的一部分,这篇笔记总结了最常用的150个Linux命令,涵盖文件和目录操作、查看文件及内容处理、文件压缩及解压缩、信息显示、搜索文件...
【linux学习笔记--17】POSIX IPC——消息队列.doc 【linux学习笔记--18】POSIX IPC——信号量.doc 【linux学习笔记--19】POSIX IPC——共享内存.doc ...【linux学习笔记-6】文件IO操作--读写、重定向等.
超详细linux学习笔记,【网络安全技术】,分享给大家。
【Linux学习笔记】这篇超全总结涵盖了Linux操作系统的基础知识,特别是关于命令行的使用和快捷键,以及一些桌面环境下的快捷操作。以下是笔记中的主要内容: 1. **LINUX常用操作命令**: - `clear`:清空终端屏幕...
linux运维学习笔记:企业Shell面试题总结-2
根据提供的信息,《Linux学习笔记.pdf》是一份关于Linux操作系统的基础学习材料,主要涵盖了Linux的基本概念、文件系统特性、权限管理以及一些常用命令的使用方法。接下来,我们将详细解析这份文档中提到的重要知识...
学习linux的笔记,发到博文了,鉴于文档方便保存和查阅,发出来,免费的哈 博文来自http://blog.csdn.net/wklken,共12篇,类似手册,可快速练习和查阅,容易上手 文档列表: Linux笔记——vim常用操作及扩展补充...
### Linux学习笔记 #### 常用命令及命令选项注释 **1. `ls`:显示文件** - `-a`:查看所有文件,包括隐藏文件。 - `-l`:查看详细信息。 - `-h`:人性化显示。 - `-d`:查看目录属性。 示例: ```bash ls -d ...
《Linux学习笔记》这份资料非常全面且详细,从 Linux 常用命令到 Linux 常用操作,再到网络管理、性能优化,几乎覆盖了 Linux 基础学习的方方面面,非常适合初学者入门!这里只是对于常用命令进行了整理,希望可以...
本篇“Linux学习笔记”详细介绍了Linux的基本目录结构及其各自的功能,这对于初学者理解Linux系统的核心概念非常重要。 #### 二、Linux目录结构解析 1. **/(根目录)** - 根目录是Linux文件系统的起点,所有的...
【linux学习笔记-2】父子进程共享文件描述符 【linux学习笔记-3】文件操作(stat,chmod,umask) 【linux学习笔记-4】进程扇和进程链 【linux学习笔记-5】编写自己的ls命令 【linux学习笔记-6】文件IO操作--读写、...
linux运维笔记:docker容器入门知识
### Linux学习笔记—01 Linux操作基础 #### 1. Linux 基础命令与用法 在Linux操作系统中,掌握一系列的基础命令是非常重要的。这些命令可以帮助用户进行各种日常操作,比如文件管理、目录切换、文件查看等。下面将...
### Linux系统结构与目录详解 #### 一、概述 Linux是一种免费使用和自由传播的类UNIX计算机操作系统的内核,其源代码可以免费获得。它诞生于1991年,由芬兰赫尔辛基大学的学生Linus Torvalds首次发布,并逐渐发展...