• Linux下查看和修改文件时间 黄河岸


    Linux下查看和修改文件时间

     

    一 、查看文件的时间及相关命令

    1、stat 查看文件时间

    1
    2
    3
    4
    5
    6
    7
    8
    [root@linux-node1 ~]# stat  lnmp-install.log
      File: `lnmp-install.log'
      Size: 2228418     Blocks: 4368       IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 1970147     Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2019-04-18 16:03:58.903725603 +0800
    Modify: 2016-05-15 15:02:15.836183263 +0800
    Change: 2016-05-15 15:02:15.836183263 +0800

    说明:Access:访问时间   Modify:修改时间  Change:改变时间 ,可以使用stat * 查看这个目录所有文件的状态。

    而我们想要查看某文件的三个时间中的具体某个时间,并以年月日时分秒的格式保存。我们可以使用下面的命令:

    1
    2
    3
    4
    5
    6
    [root@linux-node1 ~]# stat lnmp-install.log  |grep  -i Access | awk -F. '{print $1}' | awk '{print $2$3}'| awk -F- '{print $1$2$3}' | awk -F: '{print $1$2$3}' |grep -v 'rwr'
    20190418160358
    [root@linux-node1 ~]# stat lnmp-install.log  |grep  -i Modify | awk -F. '{print $1}' | awk '{print $2$3}'| awk -F- '{print $1$2$3}' | awk -F: '{print $1$2$3}'
    20160515150215
    [root@linux-node1 ~]# stat lnmp-install.log  |grep  -i Change | awk -F. '{print $1}' | awk '{print $2$3}'| awk -F- '{print $1$2$3}' | awk -F: '{print $1$2$3}'
    20160515150215  

    2、ls查看文件时间

    相应的通过ls 查看时也有三个时间:

    1
    2
    3
    • modification time(mtime,修改时间):当该文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性。
    • status time(ctime,状态时间):当该文件的”状态(status)”改变时,就会更新这个时间,举例来说,更改了权限与属性,就会更新这个时间。
    • access time(atime,存取时间):当“取用文件内容”时,就会更新这个读取时间。举例来说,使用cat去读取 ~/.bashrc,就会更新atime了。
    1
    2
    3
    4
    [root@linux-node1 ~]# ls -l --time=ctime lnmp-install.log
    -rw-r--r--. 1 root root 2228418 May 15  2016 lnmp-install.log
    [root@linux-node1 ~]# ls -l --time=atime lnmp-install.log
    -rw-r--r--. 1 root root 2228418 Apr 18 16:03 lnmp-install.log

    注意:ls 参数里没有--time=mtime 这个参数,因为我们默认通过ls -l 查看到的时间就是mtime .

    二、修改文件时间

    创建文件我们可以通过touch命令来创建,同样的,我们也可以使用touch命令来修改文件时间。touch 的相关参数如下:

    -a : 仅修改access time

    -c  :仅修改时间,而不建立文件

    -d  :后面可以接日期,也可以使用 --date="日期或时间" 

    -m :仅修改mtime

    -t  :后面可以接时间,格式为 [YYMMDDhhmm]

    注意:如果touch后面接一个已经存在的文件,则该文件的3个时间(atime/ctime/mtime)都会更新为当前时间。若该文件不存在,则会主动建立一个新的空文件。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [root@linux-node1 ~]# ll
    -rw-r--r--. 1 root root     9214 Apr 24  2016 install.log
    -rw-r--r--. 1 root root     3091 Apr 24  2016 install.log.syslog
    -rw-r--r--. 1 root root  2228418 May 15  2016 lnmp-install.log
    [root@linux-node1 ~]# touch install.log
    [root@linux-node1 ~]# stat install.log
      File: `install.log'
      Size: 9214        Blocks: 24         IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 1962242     Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2019-04-18 16:20:22.729724898 +0800
    Modify: 2019-04-18 16:20:22.729724898 +0800
    Change: 2019-04-18 16:20:22.729724898 +0800

    同样的,使用ls,查看到的结果也是一样:

    1
    2
    3
    4
    5
    6
    [root@linux-node1 ~]# ls -l --time=ctime install.log
    -rw-r--r--. 1 root root 9214 Apr 18 16:20 install.log
    [root@linux-node1 ~]# ls -l --time=atime install.log
    -rw-r--r--. 1 root root 9214 Apr 18 16:20 install.log
    [root@linux-node1 ~]# ls -l  install.log
    -rw-r--r--. 1 root root 9214 Apr 18 16:20 install.log

    利用touch修改文件时间:

    1. 同时变更文件的修改时间和访问时间
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@linux-node1 ~]# touch -d "2018-04-18 08:00:00" install.log
    [root@linux-node1 ~]# stat install.log
      File: `install.log'
      Size: 9214        Blocks: 24         IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 1962242     Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2018-04-18 08:00:00.000000000 +0800
    Modify: 2018-04-18 08:00:00.000000000 +0800
    Change: 2019-04-18 16:32:35.947725358 +0800
    2. 只变更文件的修改时间
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@linux-node1 ~]# touch -m -d "2018-05-20 08:00:00" install.log
    [root@linux-node1 ~]# stat install.log
      File: `install.log'
      Size: 9214        Blocks: 24         IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 1962242     Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2018-04-18 08:00:00.000000000 +0800
    Modify: 2018-05-20 08:00:00.000000000 +0800
    Change: 2019-04-18 16:36:06.617725402 +0800
    3. 只变更文件的访问时间
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@linux-node1 ~]# touch -a -d "2017-05-10 09:00:00" install.log
    [root@linux-node1 ~]# stat install.log
      File: `install.log'
      Size: 9214        Blocks: 24         IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 1962242     Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2017-05-10 09:00:00.000000000 +0800
    Modify: 2018-05-20 08:00:00.000000000 +0800
    Change: 2019-04-18 16:38:09.851725390 +0800

    将一个文件的时间修改为同另一个文件的时间相同

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [root@linux-node1 ~]# ls -l anaconda-ks.cfg
    -rw-------. 1 root root 1097 Apr 24 2016 anaconda-ks.cfg
     
    [root@linux-node1 ~]# touch -acmr anaconda-ks.cfg  install.log
    [root@linux-node1 ~]# stat install.log
      File: `install.log'
      Size: 9214        Blocks: 24         IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 1962242     Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2016-04-24 22:21:38.363999825 +0800
    Modify: 2016-04-24 22:21:39.114999827 +0800
    Change: 2019-04-18 16:40:09.464725644 +0800

    ## 将install.log文件的时间修改成和anaconda-ks.cfg ##

    另外touch 还支持像date 命令一样的参数修改文件时间:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@linux-node1 ~]# stat install.log
      File: `install.log'
      Size: 9214        Blocks: 24         IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 1962242     Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2016-04-24 22:21:38.363999825 +0800
    Modify: 2016-04-24 22:21:39.114999827 +0800
    Change: 2019-04-18 16:40:09.464725644 +0800
    [root@linux-node1 ~]# touch -d "3 days ago" install.log;ls -l install.log
    -rw-r--r--. 1 root root 9214 Apr 15 16:47 install.log

    总结一下常用的文件操作与时间的关系:

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

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

    3、状态改变时间。通过chmod命令更改一次文件属性,这个时间就会更新。查看文件的详细的状态、准确的修改时间等,可以通过stat命令+文件名。 

  • 相关阅读:
    Django + Vue cli 3.0 访问静态资源问题
    服务器宕机,mysql无法启动,job for mysql.service failed because the process exited with error code,数据库备份与恢复
    Git 深度学习填坑之旅三(分支branch、远程操作)
    Git 深度学习填坑之旅二(文件三种状态、打标签)
    2017-2018学年校历
    gson
    Android adb.exe程序启动不起来,如何处理
    Android LayoutInflater详解
    android genymation eclipse安装
    视频
  • 原文地址:https://www.cnblogs.com/musen/p/15949406.html
Copyright © 2020-2023  润新知