Linux 编程问题之递归取目录下所有文件名与路径
求一个LINUX程序,能遍历设定目录下的所有子目录,来读取设定目录下的所有文件名与文件路径谢谢1楼回答,能不能用C写呢?...
求一个LINUX程序,
能遍历设定目录下的所有子目录,
来读取设定目录下的所有文件名与文件路径
谢谢1楼回答,能不能用C写呢? 展开
能遍历设定目录下的所有子目录,
来读取设定目录下的所有文件名与文件路径
谢谢1楼回答,能不能用C写呢? 展开
3个回答
展开全部
楼主,你好!
在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);
}
在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);
}
展开全部
ubuntu下 sudo apt-get install tree
tree
输出为当前目录的所有子目录的树形结构。
这是自带的软件包,我觉得还蛮有意思的。
用C写,我不会。
祝你好运!
tree
输出为当前目录的所有子目录的树形结构。
这是自带的软件包,我觉得还蛮有意思的。
用C写,我不会。
祝你好运!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
[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
#!/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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询