当前位置:  技术问答>linux和unix

linux下怎样或得文件创建日期??难道就或得不了吗?

    来源: 互联网  发布时间:2016-07-22

    本文导语:  linux下 文件系统有fat32的和ext3的。我现在用lstat获得stat结构体,但是里面没有文件的创建时间。我现在想把最早创建的文件删除。不知道大家都用什么办法搞定的啊?我用st_mtime,不行啊?如果我删除了一个文件夹下...

linux下 文件系统有fat32的和ext3的。我现在用lstat获得stat结构体,但是里面没有文件的创建时间。我现在想把最早创建的文件删除。不知道大家都用什么办法搞定的啊?我用st_mtime,不行啊?如果我删除了一个文件夹下面的一些文件。下次在进行删除的时候,这个文件的st_mtime就变了。我想用文件的创建时间进行删除。现在卡在这里了痛苦的很啊。

|
如果你的文件被操作了。。。是不可能看出文件的创建时间的,除非你用了其他选项。。。。你这种情况我只能建议你读取mtime

|
在Linux中,没有文件创建时间的概念。只有文件的访问时间、修改时间、状态改变时间。也就是说不能知道文件的创建时间。

但如果文件创建后就没有修改过,修改时间=创建时间;如果文件创建后,状态就没有改变过,那么状态改变时间=创建时间;如果文件创建后,没有被读取过,那么访问时间=创建时间,这个基本不太可能。 

与文件相关的几个时间:

1。访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件使用more命令。ls、stat命令都不会修改文件的访问时间。

2。修改时间,对文件内容修改一次,这个时间就会更新。比如:vi后保存文件。ls -l列出的时间就是这个时间。

3。状态改变时间。通过chmod命令更改一次文件属性,这个时间就会更新。

查看文件的详细的状态、准确的修改时间等,可以通过stat命令+文件名。比如:

# stat nohup.out
     File: `nohup.out'
     Size: 8306               Blocks: 32            IO Block: 4096      regular file
Device: 802h/2050d         Inode: 820136         Links: 1
Access: (0777/-rwxrwxrwx)     Uid: (       0/       root)      Gid: (       0/       root)
Access: 2007-05-28 10:28:59.492016424 -0400
Modify: 2006-11-16 09:04:03.000000000 -0500
Change: 2007-05-28 10:27:44.074481632 -0400

说明:Access访问时间。Modify修改时间。Change状态改变时间。

|
I节点表占用若干个磁盘块,它几乎与标准Unix的I节点表相同。每个I节点占128个字节,读入缓冲区后存放在Struct     ext2_inode   中。   
    
  Struct   ext2_node   
    
  {   
    
  u16       i_mode;                                               /*文件模式*/   
    
  u16       i_uid;                                                 /*文件主用户标识符*/   
    
  u_32     i_size;                                               /*文件大小*/   
    
  u_32     i_atime                                               /*最佳访问文件时间*/   
    
  u_32     i_stime;                                             /*文件创建时间*/   
    
  u_32     i_mtime;                                             /*文件最近修改时间*/   
    
  u_32     i_dtime;                                             /*文件删除时间*/   
    
  u16       i_links_count;                                 /*文件连接计数*/   
    
  u16       i_gid;                                                 /*文件主的用户组标识符*/   
    
  u32       i_blocks;                                           /*文件的总块数*/   
    
  u32       i_flag;                                               /*文件标志*/   
    
  u32       i_blocd[EXT2_N_BLOCKS];           /*文件地址块索引表*/   
    
  u32       i_file_acl;                                       /*文件访问控制表*/   
    
  u32       i_dir_acl;                                         /*目录访问控制表*/   
    
  …   
    
  }   

貌似很多都只有最后修改时间。

http://topic.csdn.net/t/20050201/15/3768730.html

|
[root@RHEL4_U5 ~]# stat test.sh
  File: `test.sh'
  Size: 23              Blocks: 16         IO Block: 4096   regular file
Device: 803h/2051d      Inode: 375591      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-06-16 09:35:41.000000000 +0800
Modify: 2009-06-16 09:33:49.000000000 +0800
Change: 2009-06-16 09:33:49.000000000 +0800

用stat命令不就得出来了

|
呵呵 干脆你专门为 创建带文件创建日期的功能 写一个小shell 

每产生一个文件 就把 文件路径 当前创建日期 给记录到log file里。。。

|
看起来用 ls -l --time=ctime 可以取到文件创建时间:
[root@ache tmp]# ls -l --time=ctime a.c
-rw-r--r-- 1 root root 140 2009-05-22 12:37 a.c
[root@ache tmp]# ls -l --time=atime a.c 
-rw-r--r-- 1 root root 140 2009-06-03 20:15 a.c
[root@ache tmp]# ls -l --time=access a.c
-rw-r--r-- 1 root root 140 2009-06-03 20:15 a.c
[root@ache tmp]# ls -l --time=use a.c   
-rw-r--r-- 1 root root 140 2009-06-03 20:15 a.c
[root@ache tmp]# ls -l --time=status a.c
-rw-r--r-- 1 root root 140 2009-05-22 12:37 a.c
[root@ache tmp]# 

|
ext2、ext3 没有记录创建时间。
你可以安装 fedora 11,用 ext4

/*
 * Structure of an inode on the disk
 */
struct ext4_inode {
__le16 i_mode; /* File mode */
__le16 i_uid; /* Low 16 bits of Owner Uid */
__le32 i_size_lo; /* Size in bytes */
__le32 i_atime; /* Access time */
__le32 i_ctime; /* Inode Change time */
__le32 i_mtime; /* Modification time */
__le32 i_dtime; /* Deletion Time */
__le16 i_gid; /* Low 16 bits of Group Id */
__le16 i_links_count; /* Links count */
__le32 i_blocks_lo; /* Blocks count */
__le32 i_flags; /* File flags */
union {
struct {
__le32  l_i_version;
} linux1;
struct {
__u32  h_i_translator;
} hurd1;
struct {
__u32  m_i_reserved1;
} masix1;
} osd1; /* OS dependent 1 */
__le32 i_block[EXT4_N_BLOCKS];/* Pointers to blocks */
__le32 i_generation; /* File version (for NFS) */
__le32 i_file_acl_lo; /* File ACL */
__le32 i_size_high;
__le32 i_obso_faddr; /* Obsoleted fragment address */
union {
struct {
__le16 l_i_blocks_high; /* were l_i_reserved1 */
__le16 l_i_file_acl_high;
__le16 l_i_uid_high; /* these 2 fields */
__le16 l_i_gid_high; /* were reserved2[0] */
__u32 l_i_reserved2;
} linux2;
struct {
__le16 h_i_reserved1; /* Obsoleted fragment number/size which are removed in ext4 */
__u16 h_i_mode_high;
__u16 h_i_uid_high;
__u16 h_i_gid_high;
__u32 h_i_author;
} hurd2;
struct {
__le16 h_i_reserved1; /* Obsoleted fragment number/size which are removed in ext4 */
__le16 m_i_file_acl_high;
__u32 m_i_reserved2[2];
} masix2;
} osd2; /* OS dependent 2 */
__le16 i_extra_isize;
__le16 i_pad1;
__le32  i_ctime_extra;  /* extra Change time      (nsec 

    
 
 

您可能感兴趣的文章:

  • 菜鸟在c盘装了win2000,想在剩下的空间装Red Hat Enterprise Linux 3,在创建linux分区的时候,不知道都创建什么分区??我知道要创建一个
  • linux如何创建一个共享内存 可以mount 可以创建目录之类 跟硬盘分区一样
  • 急!linux下mysql的创建用户组和创建用户命令不能生效啊????
  • linux普通用户创建文件或目录
  • Linux创建进程的问题,请高手帮忙解答一下?
  • Linux 代理 一个客户端来就创建一个连接
  • 菜鸟问题:怎样创建一个对所有文件只有只读权限的linux帐号,谢谢!
  • linux下如何创建一个目录?
  • linux 用户创建
  • Linux系统下创建第二个oracle数据库
  • linux下如何创建一个user 和 group?
  • 在LINUX的虚拟文件系统下如何创建一个文件?
  • 在linux上如何知道文件的详细信息,如创建和结束时间等?
  • 怎样用C代码创建linux电子表格
  • LINUX下进程创建的问题
  • linux下创建目录
  • linux下如何创建虚拟存储池
  • 请问自己开发的linux驱动中,如何自动创建一个设备!
  • linux下如何为正在运行的程序创建core dump?
  • linux下原始套接字创建失败
  • LINUX C语言中,用什么函数可以设置日期和时间?
  • 请问命令行操作下怎么改Linux操作系统的日期和时间?
  • 在Linux 系统加个按日期回复文件的功能,急需
  • 想修改linux上的时间和日期,总是不对
  • 请问在linux中,怎样用c语言编程来实现对计算机的日期和时间的修改啊?
  • 怎样查看linux服务器的开机时间和日期
  • 问个问题,linux下,有像windows那样的按日期回复文件的功能么?急需
  • 在linux系统下,怎样编写shell脚本把当前目录下的文件(文件日期要求是2011年9月14日01点至2011年9月15日01点之间。。。。
  • 请问怎么修改Linux的日期和时间??????
  • linux下如何用脚本实现定时取其他服务器的以日期命名的文件阿,大家帮忙阿,我请大家喝酒:)
  • linux命令详解date使用方法(计算母亲节和父亲节日期脚本示例)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux_centos_redhat下tar命令解压tgz文件方法
  • 用java读中文linux中的文件是正确的,用java读英文linux版本中的文件是乱码,如何使英文linux读出的文件数据也是中文的?
  • linux下nm命令(显示可执行文件的符号信息)介绍以及常见nm命令用法举例
  • Linux查找包含指定文字的文件(linux查找指定文件)
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • 请问LINUX内核下,哪些文件夹下的文件是跟LINUX的硬件平台无关的?
  • mount命令(linux操作系统)挂载卸载文件系统(cifs,光驱,nfs等)方法介绍
  • 请问各位linux开发大虾,linux下有类似VC中depends的工具可以查看文件调用了哪些so文件吗?
  • linux内存文件系统ramfs实现原理
  • 急::在Linux下怎么根据另一台windows或linux的文件名,去得到这个文件
  • linux/Centos/ubuntu下如何使用umask命令修改新建文件时的默认权限
  • 我的机器装了WINDOWS2000 和 LINUX 7.3 , 请问在LINUX 中如何访问`WIN2K中的文件?同样在WIN2K中如何访问LINUX 中的文件?
  • Linux内存文件系统(ramdisk)的三种实现方式
  • 请问如何在WINDOWS中访问linux下的文件,并把Windows下的文件复制到linux下的分区中
  • 根据文件大小查找文件的find命令举例(Linux,centos,redhat)
  • linux下copy文件通常又些文件名的大小写会发生变化的,而linux又对大小写敏感,如何解决这一问题
  • Linux下glibc库文件锁:协同锁(advisory lock)和强制锁(mandatory lock)
  • Redhat Linux下用c怎么可以知道一个文件是文件夹还是真的文件?
  • Linux下u盘文件系统相关操作
  • [提问]Linux下如何把多个.a文件编译一个.so文件,或者把多个.so文件编译成一个.so文件
  • linux下find查找文件命令详细介绍及find文件用法举例说明
  • linux中对文件排序的命令(文件夹中包含子文件)
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3