Linux 编程问题之递归取目录下所有文件名与路径

求一个LINUX程序,能遍历设定目录下的所有子目录,来读取设定目录下的所有文件名与文件路径谢谢1楼回答,能不能用C写呢?... 求一个LINUX程序,
能遍历设定目录下的所有子目录,
来读取设定目录下的所有文件名与文件路径
谢谢1楼回答,能不能用C写呢?
展开
 我来答
彼时离岸
2010-10-23 · TA获得超过357个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:176万
展开全部
楼主,你好!

在BLP上正好见过这个程序,编译好执行的时候,传递的参数为要打印的目录

代码如下,纯C写的,希望对你有帮助

#include <unistd.h>
#include <stdio.h>
#include <dirent.h>

#include <string.h>
#include <sys/stat.h>
#include <stdlib.h>

void printdir(char* dir, int depth)
{
DIR *dp;
struct dirent *entry;
struct stat statbuf;

if( (dp = opendir(dir)) == NULL )
{
fprintf(stderr, "cannot open directory: %s\n", dir);
return;
}

chdir(dir);
while( (entry = readdir(dp)) != NULL)
{
lstat(entry->d_name, &statbuf);
if( S_ISDIR(statbuf.st_mode) )
{
if( strcmp(".", entry->d_name) == 0 || strcmp("..", entry->d_name) == 0 )
continue;
printf("%*s%s/\n", depth, "", entry->d_name);
printdir(entry->d_name, depth+4);
}
else
printf("%*s%s\n", depth, "", entry->d_name);
}
chdir("..");
closedir(dp);
}

int main(int argc, char* argv[])
{
char *topdir = ".";
if( argc >= 2 )
topdir=argv[1];
printf("Directory scan of %s\n", topdir);
printdir(topdir, 0);
printf("Done.\n");

exit(0);
}
sudo_su
2010-10-22 · TA获得超过1648个赞
知道小有建树答主
回答量:687
采纳率:0%
帮助的人:356万
展开全部
ubuntu下 sudo apt-get install tree
tree
输出为当前目录的所有子目录的树形结构。
这是自带的软件包,我觉得还蛮有意思的。
用C写,我不会。
祝你好运!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hjjie2006
2010-10-22 · TA获得超过116个赞
知道答主
回答量:64
采纳率:0%
帮助的人:65.9万
展开全部
[root@localhost ]# cat dir.sh
#!/bin/bash
read -p "please specifies a dir :"dir
find $dir | sort | sed -n 's/\(.*\/\)\(.*\)/Basename\t\2\tDirname\t\1/p' | column -t

[root@localhost ]# sh dir.sh
please specifies a dir :/etc
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式