Linux:find 按文件修改时间查找文件

释放双眼,带上耳机,听听看~!

find 按文件修改时间查找文件

   

查找文件


1
2
3
4
5
1  ---(+n)----------|----------(n)----------|----------(-n)---
2      (n+1)*24H前|   (n+1)*24H~n*24H间   |n*24H内
3
4
5

-ctime -n    查找距现在 n*24H 内修改过的文件

-ctime n    查找距现在 n*24H 前, (n+1)*24H 内修改过的文件

-ctime +n    查找距现在 (n+1)*24H 前修改过的文件

[a|c|m]min    [最后访问|最后状态修改|最后内容修改]min

[a|c|m]time    [最后访问|最后状态修改|最后内容修改]time

linux 文件的三种时间
(以 find 为例):

atime 最后一次访问时间, 如 ls, more 等, 但 chmod, chown, ls, stat 等不会修改些时间, 使用 ls -utl 可以按此时间顺序查看;

ctime 最后一次状态修改时间, 如 chmod, chown 等状态时间改变但修改时间不会改变, 使用 stat file 可以查看;

mtime 最后一次内容修改时间, 如 vi 保存后等, 修改时间发生改变的话, atime 和 ctime 也相应跟着发生改变.

注意: linux 里是不会记录文件的创建时间的, 除非这个文件自创建以来没有发生改变, 那么它的创建时间就是它的最后一次修改时间.

#ls -lt /home/admin   # 按修改时间顺序查看

#ls -lut /home/admin  # 按访问时间顺序查看

(如果想反序查看的话需要加一个选项 -r)

==========

find 命令有几个用于根据您系统的时间戳搜索文件的选项。这些时间戳包括


1
2
3
4
1mtime      文件内容上次修改时间
2atime      文件被读取或访问的时间
3ctime      文件状态变化时间
4

1
2
1 mtime 和 atime 的含义都是很容易理解的,而 ctime 则需要更多的解释。由于 inode 维护着每个文件上的元数据,因此,如果与文件有关的元数据发生变化,则 inode 数据也将变化。这可能是由一系列操作引起的,包括创建到文件的符号链接、更改文件权限或移动了文件等。由于在这些情况下,文件内容不会被读取或修改,因此 mtime 和 atime 不会改变,但 ctime 将发生变化。
2

这些时间选项都需要与一个值 n 结合使用,指定为 -n、n 或 +n。


1
2
3
4
5
6
7
1N * 24
2+1 表示  1 * 24 +24小时以外..
3+0 表示  0 * 24 +24小时以外
41  表示  1 * 24 + 24 到 24 之间..
50  表示  0 * 24 + 24 到 0 之间..
6-1 表示  0 * 24 +24 内,甚至为未来时间...
7

1.当前时间24小时—当前时间(昨天-今天)
#find . -mtime 0
2.当前时间48小时前–当前时间24小时前(前天-昨天)
#find . -mtime 1
3.当前时间48小时前(2天前)
#find . -mtime +1
4.当前时间24小时–当前时间(昨天-今天)
#find . -mtime -1

查找文件并删除

主要有两个中方式:

find. -name "*.bak" | xargs rm-Rf

find. -name "*.bak" -exec rm -Rf {} ;

注意:

-exec 的语句后必须要加;
xargs必须要跟管道一起使用.
差别:

1、exec 每处理一个文件或者目录,它都需要启动一次命令,效率不好; 
2、exec 格式麻烦,必须用 {} 做文件的代位符,必须用 ; 作为命令的结束符,书写不便。

3、xargs是把所有找到的文件名一股脑的转给命令。当文件很多时,这些文件名组合成的命
令行参数很容易超长,导致命令出错。

4、xargs 不能操作文件名有空格的文件;

删除3天内的文件


1
2
1find . -maxdepth 4  -name "*-*" -mtime 3 | sudo xargs rm -r
2

-maxdepth的值决定是否对下面的子目录进行递归查找

-mtime 3表示查找3天内的,-mtime +3表示查找超过3天的,也就是查找3天前的文件

删除指定大小的文件


1
2
1find . -size -50c -name "*-*"  | sudo xargs rm -r
2

-size的值 -50c 表示小于50bytes +50c表示大于50bytes

-size后面数字字符参考 :


1
2
3
4
5
6
7
1b : 512byes blocks
2c : bytes 一个字节
3w : 双字节
4k  : 1kb
5M : 1 兆
6G : 1 G
7

 

给TA打赏
共{{data.count}}人
人已打赏
安全运维

基于Hadoop生态圈的数据仓库实践 —— 进阶技术(六)

2021-12-12 17:36:11

安全运维

OpenSSH-8.8p1离线升级修复安全漏洞

2022-1-9 9:47:55

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索