linux获取指定目录多个文本文件,linux下c++获取指定目录及其子目录下所有文件...

#define MAX_COUNT 100 //如果查找的文件很多,超过100个,每按一次显示100个

#define FILE 0 //查找的是文件

#define DIRECTORY 1 //查找的是目录

using namespace std;

//返回目录dir下的,filetype类型文件或目录,每次返回一条,没有返回“”,

string getContent(const char* dir, string filetype="",int fileOrDir=FILE);

//得到目录dir下的filetype类型文件或dir下的目录的列表

vectorgetall(const char* dir, string filetype="", int fileOrDir=FILE);

//对得到得到的返回列表进行排序的函数,实则为比较两个字符串大小

bool fileCmp(string file1, string file2);

//把一个string字符串中的小写字符转换成大写

string toUpper(string& str);

//目录数

int dirCount = 0;

//文件数

int fileCount = 0;

int main(int argc, char*argv[])

{

//至少两个参数,即命令+目录,还可以在加一个文件类型

if(argc<2)

{

cout << "Usage:executable [directory] (+[file type])!" << endl

<< " Like:./a.out /home/localhost/" << endl

<< " ./a.out /home/localhost/src/ .cpp" << endl

<< " ./a.out /home/localhost/src/ cpp" << endl;

return -1;

}

string stropt = "";

//判断目录是否存在。如果不存在,提示是否创建,输入y,创建,否则什么也不做!

if(access(argv[1],F_OK)!=0)

{

cout << "Directory " << argv[1] << " is not exist!Create it?(Y/N):";

string str = "";

cin >> str;

if(str.at(0)=='y'||str.at(0)=='Y')

{

mkdir(argv[1],777);

}

}

else

{

string fullPathfFilename;

string filetype = "";

if(argc>2)

{

filetype = argv[2];

if(filetype.at(0)=='.')

{

filetype = filetype.substr(1,filetype.length()-1);

}

}

int i=0;

//先显示所有目录

while(1)

{

i++;

//每次获取dir下的一个目录

fullPathfFilename=getContent(argv[1],filetype,DIRECTORY);

if(fullPathfFilename.length()==0) break;

if(i==1)

{

cout << "Directory [" << argv[1] << "]:has [" << dirCount << "] directorys!" << endl;

}

cout << fullPathfFilename << endl;

}

cout << endl << endl;

i=0;

//显示该类型的或全部文件

while(1)

{

i++;

//每次获取dir下的一个filetype类型文件,如果filetype为“”,则获取所有文件。

fullPathfFilename=getContent(argv[1],filetype,FILE);

if(fullPathfFilename.length()==0) break;

if(i==1)

{

cout << "And has["<< fileCount << ((filetype.size()==0)?"]":("] "+toUpper(filetype)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值