关于LINUX三种时间戳的详细说明(带实验)

Linux系统将时间标记分三类:

atime( A ccess time):档案上次被读取的时间。

ctime(status C hange time):档案的属性或内容上次被修改的时间。

mtime( M odified time):档案的内容上次被修改的时间。

下面我将用实验给大家讲解一下:

[root@localhost ~]# touch a.txt  ==》创建文件a.txt

[root@localhost ~]# stat a.txt    ==》查看时间戳

  File: "a.txt"

  Size: 0         Blocks: 0          IO Block: 4096   普通空文件

Device: fd00h/64768dInode: 674903      Links: 1

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

Access: 2018-03-10 13:29:04.130157512 +0800

Modify: 2018-03-10 13:29:04.130157512 +0800

Change: 2018-03-10 13:29:04.130157512 +0800

[root@localhost ~]# echo 1>> a.txt  ==》向文件a.txt追加内容

[root@localhost ~]# stat a.txt   ==》查看追加内容后的文件时间戳

  File: "a.txt"

  Size: 1         Blocks: 8          IO Block: 4096   普通文件

Device: fd00h/64768dInode: 674903      Links: 1

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

Access: 2018-03-10 13:29:04.130157512 +0800

Modify: 2018-03-10 13:29:19.351159892 +0800  ==》时间戳改变

Change: 2018-03-10 13:29:19.351159892 +0800  ==》时间戳改变           

[root@localhost ~]# chmod +x a.txt  ==》修改文件a.txt的权限

[root@localhost ~]# stat a.txt  ==》查看修改权限后的文件时间戳

  File: "a.txt"

  Size: 1         Blocks: 8          IO Block: 4096   普通文件

Device: fd00h/64768dInode: 674903      Links: 1

Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2018-03-10 13:29:04.130157512 +0800

Modify: 2018-03-10 13:29:19.351159892 +0800

Change: 2018-03-10 13:29:42.156153774 +0800 ==》时间戳改变

[root@localhost ~]# cat a.txt  ==》查看文件a.txt

 

[root@localhost ~]# stat a.txt  ==》查看文件a.txt的时间戳

  File: "a.txt"

  Size: 1         Blocks: 8          IO Block: 4096   普通文件

Device: fd00h/64768dInode: 674903      Links: 1

Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2018-03-10 13:30:00.010155999 +0800 ==》时间戳改变

Modify: 2018-03-10 13:29:19.351159892 +0800

Change: 2018-03-10 13:29:42.156153774 +0800

[root@localhost ~]# vim a.txt  ==》向文件a.txt添加内容

daskhdjkas

"a.txt" 1L, 11C 已写入

[root@localhost ~]# stat a.txt   ==>查看文件a.txt的时间戳

  File: "a.txt"

  Size: 11        Blocks: 8          IO Block: 4096   普通文件

Device: fd00h/64768dInode: 674908      Links: 1

Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2018-03-10 13:30:34.652158960 +0800 ==》时间戳改变

Modify: 2018-03-10 13:30:34.652158960 +0800==》时间戳改变

Change: 2018-03-10 13:30:34.653158940 +0800==》时间戳改变

Linux系统中,批量修改文件名并保留时间戳可以通过组合使用shell命令来实现。一个常用的命令是`rename`,不过这个命令在不同的Linux发行版中可能有所不同,比如在某些系统中它是`prename`。此外,`mv`命令也可以用来重命名文件,但是它本身不支持批量重命名和保留时间戳的功能。这里,我将提供一个使用`rename`命令的例子来说明如何批量修改时间戳的文件名。 如果你的系统中安装了`rename`命令,你可以使用如下脚本来批量修改文件名。这个例子假设你想要将文件名中的日期格式从`YYYYMMDD`更改为`DDMMYYYY`,但保留文件的原始时间戳: ```bash # 首先找到所有符合特定模式的文件 find . -type f -name "*????????*" | while read oldname; do # 提取原始文件的修改时间戳 oldtime=$(date -r "$oldname" +%s) # 使用rename命令更改文件名格式 # 这里假设原始文件名为20230321_sample.txt,我们将其改为21032023_sample.txt newname=$(echo $oldname | sed 's/\(.*\)....\(.*\)\./\2\1./') rename "$oldname" "$newname" # 更改文件时间戳以匹配原始文件 touch -t "@$oldtime" "$newname" done ``` 请注意,上面脚本中的`sed`命令是基于文件名的特定格式进行的简单替换,如果你的文件名格式不同,需要相应地修改正则表达式。此外,`touch`命令用于设置文件的时间戳,`-t`参数后跟的是时间戳。 在执行这类操作之前,建议先在一个小的文件集上测试脚本,以确保它按照预期工作,并且不会导致数据丢失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值