Linux中文件的时间属性(涉及touch、stat命令)
来源:互联网 发布:数据蒙特卡洛 编辑:程序博客网 时间:2024/05/17 18:43
一.信息说明
其实写这个东西的朋友应该也很多啦,但是为了让自己更加有映像同时也能按照自己的习惯去看的话,还是自己结合网上各位朋友的写法和自己的理解来写一下咯!稍微废话有点多了,写这个文章主要是因为最近一个备份策略的需求。居然才发现原来touch命令不只是我自己曾经用的那些功能(当然研究下,会发现很多命令都会有这种感觉啊!)。
需求信息:生成一定命名规则的50个文件,且这些文件的最后修改日期为最近50天的每一天。然后再通过find命令去删除30天以前的文件。
二.命令说明
1.ls命令查看时间
通常情况下我们通过ls看到的文件的各种时间,说明如下:
ls -lt:t参数默认表示以最后修改时间排序;ls -lut:u结合lt参数使用表示以最后访问时间排序;ls -ltc:参数c结合lt使用表示按照文件状态最后修改时间排序
2.stat命令
stat命令用来查看文件/文件系统的状态,语法和常用参数如下:
stat [option] ... FILE ...
-f:显示文件系统状态(如果指定文件则为该文件所在文件系统的状态);-t:表示以精简模式显示(如果通过shell编程进行取值会更方便)
范例1:通过touch新建一个文件并查看各个状态
[root@node110 ~]# touch xxx
[root@node110 ~]# stat xxx
File: `xxx'-->文件名
Size: 0 Blocks: 0 IO Block: 4096 regular empty file文件大小(KB) 块数 IO块的大小 文件属性(本例为:普通空文件)
Device: 803h/2051d Inode: 2241272 Links: 1设备编号:十六进制h/十进制d Inode号 硬链接数量
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)访问权限 文件所有者的ID及用户名 所在的组ID及组名
Access: 2015-07-11 10:35:26.917403840 +0800文件上次访问时间
Modify: 2015-07-11 10:35:26.917403840 +0800上次文件内容修改时间
Change: 2015-07-11 10:35:26.917403840 +0800上次文件状态变更时间
范例2:cat查看文件引起-atime发生变化:
[root@node110 ~]# cat xxx
[root@node110 ~]# stat xxx
File: `xxx'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 2241272 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-07-11 10:35:44.898405321 +0800
Modify: 2015-07-11 10:35:26.917403840 +0800
Change: 2015-07-11 10:35:26.917403840 +0800
范例3:echo写入内容仅引起mtime/ctime发生变化(这种写入不会引起atIme发生变化)
[root@node110 ~]# echo xxx>xxx
[root@node110 ~]# stat xxx
File: `xxx'
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 2241272 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-07-11 10:35:44.898405321 +0800
Modify: 2015-07-11 10:36:00.291384045 +0800
Change: 2015-07-11 10:36:00.291384045 +0800
范例4:修改权限引起ctime发生变化
[root@node110 ~]# chmod 777 xxx
[root@node110 ~]# stat xxx
File: `xxx'
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 2241272 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-07-11 10:35:44.898405321 +0800-->上次访问时间
Modify: 2015-07-11 10:36:00.291384045 +0800-->数据内容发生变化
Change: 2015-07-11 10:39:23.237384355 +0800-->文件状态发生改变
范例5:以-t参数输出简明模式:
[root@node110 ~]# stat -t xxx
xxx 4 8 81ff 0 0 803 2241272 1 0 0 1436582144(修改时间) 1436582160(内容变化时间) 1436582363(状态变化时间) 4096
范例6:查看文件系统状态:
[root@node110 ~]# stat -f xxx
File: "xxx"
ID: 5093d08d2d86512 Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 11482116 Free: 6937618 Available: 6354361
Inodes: Total: 2916352 Free: 2763908
[root@node110 ~]# stat -f Desktop/
File: "Desktop/"
ID: 5093d08d2d86512 Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 11482116 Free: 6937618 Available: 6354361
Inodes: Total: 2916352 Free: 2763908
3.touch命令修改文件时间戳
书读得太少,以前一直简单的认为touch命令就是拿来新建一个空文件的。直到今天手欠去man了一下才发现:touch - change file timestamps,豁然开朗,触摸一下嘛(有的时间自然要发生变化)。语法如下:touch [OPTION] ... FILE(如果指定的文件不存在会创建一个空文件) ...
-a 仅修改文件的访问时间(atime)-c 不创建文件,即使文件不存在;-d 将字符串指定的日期设定为文件的时间属性(同--date=STRING);-m 仅修改文件的mtime;-t 设置为指定的时间([[CC]YY]MMDDhhmm[.ss])DATE STRING
The --date=STRING is a mostly free format human readable date string such as "Sun, 29 Feb 2004 16:21:42 -0800" or "2004-02-29 16:21:42" or even "next Thursday". A date string may contain items indicating calendar date, time of day, time zone, day of week, relative time, relative date, and numbers. An empty string indicates the beginning of the day. The date string format is more complex than is easily documented here but is fully described in the info documentation.
4.find命令删除指定天数以前的文件
此处写出范例语句了(找到并删除/app/backup目录下符合"*dmp*"命名规则且上次修改时间为30天以前的普通文件,删除时通过-print打印到标准输出):
find /app/backup/ -name "*dmp*" -type f -mtime +31 -exec rm -rf {} \; -print
三.实现方法
上面第四点说明了怎么删除,但是就在今天突然要删除这些测试环境中间没有的文件。怎么办呢?
#!/bin/sh
for ((i=0; i<=50; i++))
do
day_time=$(date -d "$i day ago" "+%Y%m%d%H%M")
touch -m -t $day_time /app/backup/after$day_time.dmp
done
如果不愿意vi一个文件,您也可以直接从for开始执行哦(别忘啦路径是不是存在)。
0 0
- Linux中文件的时间属性(涉及touch、stat命令)
- linux中文件的时间戳atime|ctime|atime以及stat命令
- 用linux命令touch修改文件及其子文件夹内文件的时间属性
- linux中stat命令时间和文件权限解读
- [Linux] 文件时间属性及touch命令
- linux命令之---touch命令用于修改文件或者目录的时间属性
- touch命令:建立空文件,修改文件的时间
- linux下的stat命令查看文件系统的时间
- 【Linux】stat命令查看文件的三个时间
- 【Linux】stat命令查看文件的三个时间参数
- Linux命令之stat的三个时间详解
- linux中文件的访问时间异常
- linux stat命令三个时间详解
- Linux中文件权限的命令
- linux中touch命令参数修改文件的时间戳
- linux的touch命令
- Linux中文件替换命令
- linux中文件操作命令
- 错误:浏览器访问jsp页面,却变成了下载该页面
- 使用InternetGetConnectedState这个API判断网络是否连通
- 输入十个字符(可能是数字也可能是字母)然后输出
- CSAPP LAB---perflab-handout性能优化
- cpu绑定和cpu亲和性
- Linux中文件的时间属性(涉及touch、stat命令)
- LeetCode 235. Lowest Common Ancestor of a Binary Search Tree
- 树莓派 常用命令
- Leetcode#34 Search for a Range
- 数据结构基础 图的遍历(一) 之 DFS
- The virtual table
- CSAPP LAB---buflab-handout(缓冲区溢出实验)
- linux中popen() 函数与system () 详解
- Java中的(JDK5新特性)枚举10