Linux下修改文件的4个时间

由于一些原因… 接触到了如何修改Linux(/windows)下文件4个时间的方式.

修改时间

修改Access time 与 Modify time:

bash

󰄬

1touch -a -d '2000-01-01 08:15:23'

2touch -m -d '2000-01-01 08:15:23'

而Change time与Birth time貌似是与fs相绑定的, 比如在Linux的ext4下打包一个zip, 传送至windows的ntfs中解压, 显示的创建时间也只是当时windows的时钟所显示的时间… 关于这一点尚未仔细研究, 不过由于修改这两个时间的方式一般都是通过修改系统时钟.

windows下对系统时间修改的方式比较简单, 在Linux下可能还要关闭同步, 不然就会这样:

bash

󰄬

1# whoami

2root

3# date -s '2000-01-01 08:00:00'

4Sat Jan 1 08:00:00 CST 2000

5# date

6Fri Mar 24 16:09:19 CST 2023

其原因在于有守护进程timesyncd, 会偷偷自动同步时间, 进行关闭即可:

bash

󰄬

1systemctl stop systemd-timesyncd.service

读取时间

使用stat指令即可:

bash

󰄬

1stat file

2 File: file

3 Size: 0 Blocks: 0 IO Block: 4096 regular empty file

4Device: 259,5 Inode: 6832942 Links: 1

5Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

6Access: 2023-03-24 13:42:11.915535679 +0800

7Modify: 2022-01-01 12:00:06.749831785 +0800

8Change: 2023-03-24 16:05:35.758645206 +0800

9 Birth: 2022-01-01 12:00:06.749831785 +0800