由于一些原因… 接触到了如何修改Linux(/windows)下文件4个时间的方式.
修改时间
修改Access time 与 Modify time:
bash
1touch -a <file> -d '2000-01-01 08:15:23'
2touch -m <file> -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