当前位置: 技术问答>linux和unix
跪求各路英雄好汉帮帮我这个菜鸟吧 linux c 关于文件夹问题
来源: 互联网 发布时间:2017-01-16
本文导语: 脚本如下: #!/bin/bash #1.sh echo 请输入一个目录路径: read var1 echo 请输入生成的文件名称: read var2 ls -Rl $var1 > $var2 脚本运行结果如下: /home/zhangzw: 总用量 20 -rw-r--r-- 1 zhangzw users 188 9月 1 02:50 2.txt -rwxr-...
脚本如下:
#!/bin/bash
#1.sh
echo 请输入一个目录路径:
read var1
echo 请输入生成的文件名称:
read var2
ls -Rl $var1 > $var2
脚本运行结果如下:
/home/zhangzw:
总用量 20
-rw-r--r-- 1 zhangzw users 188 9月 1 02:50 2.txt
-rwxr-xr-x 1 zhangzw users 57 8月 31 06:29 me.txt
/home/zhangzw/zzw:
总用量 64
-rw-r--r-- 1 zhangzw users 1053 8月 31 08:50 1.txt
-rwxrwxrwx 1 zhangzw users 61 8月 31 06:11 zzw.c
/home/zhangzw/zzw2:
总用量 80
-rw-r--r-- 1 zhangzw users 582 11月 17 15:52 11.c
-rw-r--r-- 1 zhangzw users 257 11月 17 17:39 12.c
我有一个shell脚本如上 基本功能是把输入的目录路径下的所有文件(也包括子目录)的详细文件名保存到一个文件里(或数组里)
该如何用c语言实现上边的功能呢 具体一点 我刚开始接触linux c
有人告诉我用opendir()/readdir()/closedir()不太会用呀
#!/bin/bash
#1.sh
echo 请输入一个目录路径:
read var1
echo 请输入生成的文件名称:
read var2
ls -Rl $var1 > $var2
脚本运行结果如下:
/home/zhangzw:
总用量 20
-rw-r--r-- 1 zhangzw users 188 9月 1 02:50 2.txt
-rwxr-xr-x 1 zhangzw users 57 8月 31 06:29 me.txt
/home/zhangzw/zzw:
总用量 64
-rw-r--r-- 1 zhangzw users 1053 8月 31 08:50 1.txt
-rwxrwxrwx 1 zhangzw users 61 8月 31 06:11 zzw.c
/home/zhangzw/zzw2:
总用量 80
-rw-r--r-- 1 zhangzw users 582 11月 17 15:52 11.c
-rw-r--r-- 1 zhangzw users 257 11月 17 17:39 12.c
我有一个shell脚本如上 基本功能是把输入的目录路径下的所有文件(也包括子目录)的详细文件名保存到一个文件里(或数组里)
该如何用c语言实现上边的功能呢 具体一点 我刚开始接触linux c
有人告诉我用opendir()/readdir()/closedir()不太会用呀
|
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
struct dirent *dp;
struct stat statbuf;
struct passwd *pwd;
struct group *grp;
struct tm *tm;
char datestring[256];
...
/* Loop through directory entries. */
while ((dp = readdir(dir)) != NULL) {
/* Get entry's information. */
if (stat(dp->d_name, &statbuf) == -1)
continue;
/* Print out type, permissions, and number of links. */
struct group *grp;
struct tm *tm;
struct tm *tm;
char datestring[256];
...
/* Loop through directory entries. */
while ((dp = readdir(dir)) != NULL) {
/* Get entry's information. */
if (stat(dp->d_name, &statbuf) == -1)
continue;
/* Print out type, permissions, and number of links. */
printf("%10.10s", sperm (statbuf.st_mode));
printf("%4d", statbuf.st_nlink);
/* Print out owner's name if it is found using getpwuid(). */
if ((pwd = getpwuid(statbuf.st_uid)) != NULL)
printf(" %-8.8s", pwd->pw_name);
else
printf(" %-8d", statbuf.st_uid);
/* Print out group name if it is found using getgrgid(). */
if ((grp = getgrgid(statbuf.st_gid)) != NULL)
printf(" %-8.8s", grp->gr_name);
else
printf(" %-8d", statbuf.st_gid);
/* Print size of file. */
printf(" %9jd", (intmax_t)statbuf.st_size);
tm = localtime(&statbuf.st_mtime);
/* Get localized date string. */
strftime(datestring, sizeof(datestring), nl_langinfo(D_T_FMT), tm);
printf(" %s %sn", datestring, dp->d_name);
}
你很幸运,man stat里恰好有一个。
|
先利用operdir打开目录,然后readdir读取目录里的内容,也就是各个文件的信息。利用文件名得到该文件名的相关信息,然后存放到另外一个文件里即可。源代码是楼上说的:
|
使用readdir你可能需要递归
考虑使用scandir()
考虑使用scandir()
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。