Linux.ChinaUnix.net
ChinaUnix | Linux首页 | 新闻 | 博客 | 文章 | 专栏 | 新手 | 方案 | 图书 | 下载 | 人才 | 手册 | wiki | 搜索     
Linux论坛
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


help!!!!linux下如何编程显示目录下的文件,包括大小,时间
首页 » CU论坛 » Linux » 汇总贴列表 » 编程问题 »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
chinahelloworld
侠客




UID:723386
注册:2008-6-28
最后登录: 2008-08-22
帖子:19
精华:0

可用积分:32 (白手起家)
信誉积分:0
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[资料] [站内短信] [Blog]


1楼 发表于 2008-8-7 16:57 
就像是WIN下,文件夹中视图-->详细信息 中看到的,文件名  大小 类型修改时间这样的列表。我在linux下怎么得到啊,关系到小弟的饭碗,拜托各位了。
下面是我自己写的一段程序,很不完整,也不好用
{
DIR   *dir;
char   fullpath[256],currfile[256];
struct   dirent   *s_dir;
struct   stat   file_stat;
strcpy(fullpath,Path);
dir=opendir(fullpath);
while((s_dir=readdir(dir))!=NULL){
  if((strcmp(s_dir->d_name,".")==0)||(strcmp(s_dir->d_name,"..")==0))continue;
  sprintf(currfile,"%s",s_dir->d_name);
  lstat(currfile,&file_stat);
  printf("%s\n",currfile);
      }
      closedir(dir);
}
拜托各位大虾出手相助,谢谢。



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 kenduest   帅哥
版主-法师
小州



UID:277667
注册:2005-6-7
最后登录: 2008-10-06
帖子:5960
精华:1

可用积分:2408 (小富即安)
信誉积分:100
专家积分:299 (本版:0)
空间积分:0
推广积分:0

来自:sayya taiwan
状态:...保密...

[资料] [站内短信] [Blog]


2楼 发表于 2008-8-7 16:59 
那目前問題是哪在哪邊?



--



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

--
hexdump -C /dev/sda | head -n 30
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
chinahelloworld
侠客




UID:723386
注册:2008-6-28
最后登录: 2008-08-22
帖子:19
精华:0

可用积分:32 (白手起家)
信誉积分:0
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[资料] [站内短信] [Blog]


3楼 发表于 2008-8-7 17:20 
回复 #2 kenduest 的帖子

这一段只能显示文件名字,并且顺序也没有规律,也即不知道它列出的文件名是按照什么顺序排的。大小的话,我用file_stat.st_size,出来的大小都一样的,不知道为什么。还有我的目的是要做一个和shell中的ls -l或者ll命令一样的程序。搞不来啊,郁闷。本来就是菜鸟,现在还靠linux编程混饭吃,哎



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
chinahelloworld
侠客




UID:723386
注册:2008-6-28
最后登录: 2008-08-22
帖子:19
精华:0

可用积分:32 (白手起家)
信誉积分:0
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[资料] [站内短信] [Blog]


4楼 发表于 2008-8-7 17:26 
回复 #1 chinahelloworld 的帖子

还有,我用if(S_ISDIR(file_stat.st_mode))。。。。。
编译能过,但是S_ISDIR(file_stat.st_mode)的值总是假,不知道为什么,本来按道理,如果是是目录的话,应该为真啊



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
web_surf   帅哥
风云使者



UID:305938
注册:2005-8-24
最后登录: 2008-10-06
帖子:511
精华:0

可用积分:508 (稍有积蓄)
信誉积分:110
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[资料] [站内短信] [Blog]


5楼 发表于 2008-8-7 17:29 
s_dir->d_name只是文件名,你需要将它与fullpath拼接成全路径名,再调用stat

[ 本帖最后由 web_surf 于 2008-8-7 17:37 编辑 ]



您对本贴的看法:鲜花[1] 臭蛋[0]

__________________________________

宠辱不惊, 闲看庭前花开花落
去留无意, 漫观天外云卷云舒
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 MMMIX
广告杀手-大法师




UID:342513
注册:2005-11-28
最后登录: 2008-10-07
帖子:8827
精华:0

可用积分:10877 (大富大贵)
信誉积分:100
专家积分:89 (本版:79)
空间积分:0
推广积分:0

状态:...保密...

[资料] [站内短信] [Blog]


6楼 发表于 2008-8-7 21:03 


QUOTE:
原帖由 chinahelloworld 于 2008-8-7 16:57 发表
就像是WIN下,文件夹中视图-->详细信息 中看到的,文件名  大小 类型修改时间这样的列表。我在linux下怎么得到啊,关系到小弟的饭碗,拜托各位了。
下面是我自己写的一段程序,很不完整,也不好用
{
DIR   ...

知道 ls 不?看看它的代码。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

天地不仁, 以万物为刍狗!
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
lukeden
精灵




UID:652788
注册:2007-12-10
最后登录: 2008-09-01
帖子:162
精华:0

可用积分:515 (稍有积蓄)
信誉积分:0
专家积分:0 (本版:0)
空间积分:808
推广积分:0

状态:...离线...

[资料] [站内短信] [Blog]


7楼 发表于 2008-8-7 21:33 
楼主说的就是ls -l 的功能。

正如楼主在程序中做的,取得的stat结构里的成员就包含了楼主所要的所有信息,建议你好好看看这个结构的定义



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
vermouth   帅哥 (酒)
大天使


CU奥运火炬传递手2008
UID:668512
注册:2008-2-15
最后登录: 2008-10-07
帖子:2322
精华:0

可用积分:2113 (小富即安)
信誉积分:30
专家积分:38 (本版:0)
空间积分:0
推广积分:0

来自:shanghai
状态:...离线...

[资料] [站内短信] [Blog]


8楼 发表于 2008-8-7 21:50 
ls -alR   是这个么?



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

大梦谁先觉?平生我自知,草堂春睡足,窗外日迟迟。
.
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 kenduest   帅哥
版主-法师
小州



UID:277667
注册:2005-6-7
最后登录: 2008-10-06
帖子:5960
精华:1

可用积分:2408 (小富即安)
信誉积分:100
专家积分:299 (本版:0)
空间积分:0
推广积分:0

来自:sayya taiwan
状态:...保密...

[资料] [站内短信] [Blog]


9楼 发表于 2008-8-7 23:33 


QUOTE:
原帖由 chinahelloworld 於 2008-8-7 17:20 發表
這一段只能顯示文件名字,並且順序也沒有規律,也即不知道它列出的文件名是按照什麼順序排的。

是沒有排序過的成果呈現,與 ls -f 輸出會是一樣的。ls 預設會依據檔名排序。

QUOTE:
大小的話,我用file_stat.st_size,出來的大小都一樣的

不至於吧。但是你給的 code 沒寫這部份啊....

QUOTE:
還有我的目的是要做一個和 shell中的ls -l或者ll命令一樣的程序。搞不來啊,鬱悶。本來就是菜鳥,現在還靠linux編程混飯吃,哎

那你得把結果進陣列,然後用 sort() 函數排序後才能夠達成該需求。

QUOTE:
我用if(S_ISDIR(file_stat.st_mode))。。。。。
編譯能過,但是S_ISDIR(file_stat.st_mode)的值總是假,不知道為什麼,本來按道理,如果是是目錄的話,應該為真啊

你這樣說沒有程式碼無法判斷問題點。

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>

int main()
{
  struct stat buf;

  stat("/etc",&buf);

  if (S_ISDIR(buf.st_mode) == 0)
    printf("\n\t/etc is not directory !\n\n");
  else
    printf("\n\t/etc is directory !\n\n");

  return 0;
}

建議你先 man 2 stat 把結構體看清楚後才好 coding。

--



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

--
hexdump -C /dev/sda | head -n 30
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
实习版主 duanjigang (塞上花开,红颜逝)
实习版主-精灵使



UID:326918
注册:2005-10-23
最后登录: 2008-10-06
帖子:2568
精华:6

可用积分:1331 (家境小康)
信誉积分:105
专家积分:187 (本版:30)
空间积分:0
推广积分:0

状态:...离线...

[资料] [站内短信] [Blog]


10楼 发表于 2008-8-8 07:58 
想省事的话,就

system("ls -alt dir_name  > result")

然后解析result文件
想玩高深的话就看coreutils中ls的源代码咯

[ 本帖最后由 duanjigang 于 2008-8-8 08:00 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

<font color="Red">放下负担,奔向新生命!
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?

首页 » CU论坛 » Linux » 汇总贴列表 » 编程问题 »

 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - Linux时代 - Archiver - WAP - TOP

Processed in 0.057593 second(s), 5 queries , Gzip enabled