博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux文件查找利器 非find莫属
阅读量:7221 次
发布时间:2019-06-29

本文共 2342 字,大约阅读时间需要 7 分钟。

一、find语法

Usage:find PATHNAME [-option] [-exec|-ok command] {} \;

  • PATHNAME:查找的路径名

  • [option]:可选择要匹配的参数

  • [-exec|-ok command]:将查找的文件执行command操作

  • {}:查找到的文件名

  • \;:反斜杠代表转义,分号代表结束符

二、find参数

  • -name

1
按文件名字查找
  • -perm

1
按文件权限查找
  • -user

1
按文件属主查找
  • -group

1
按文件属组查找
  • -nouser

1
查找无有效属主的文件,即文件的属组在
/etc/groups
中不存在
  • -nogroup

1
#查找无有效属组的文件,即文件的属主在/etc/groups中不存在

  • -mtime(mmin)  -n +n

1
按文件更改时间来查找文件,-n指n天(分钟)以内,+n指n天(分钟)以前
  • -atime(amin)  -n +n

1
按文件访问时间来查找文件,-n指n天(分钟)以内,+n指n天(分钟)以前
  • -ctime(cmin)  -n +n

1
按文件创建时间来查找文件,-n指n天(分钟)以内,+n指n天(分钟)以前
  • -never f1 !f2

1
查找更改时间比f1新但比f2旧的文件
  • -type [b| d| c| p| l| f]

1
查找块设备,目录,字符设备,管道、符号链接、普通文件
  • -size n[c]

1
查长度为n块[或n字节]的文件
  • -depth

1
查找于某一类型文件系统中的文件,这些文件系统类型通常可在
/etc/fstab
中找到
  • -mount

1
查文件时不跨越文件系统
mount
  • -follow

1
如果遇到符号链接文件,就跟踪链接所指的文件
  • -prune

1
忽略某个目录,如果同时使用了-depth选项,那么-prune选项将被
find
命令忽略。

三、find案列

1、查找指定目录下大于300M的文件,并将其移动到指定的路径中

1
2
# find ~ -size +300M
# find ~ -size +300M -exec mv {} ~/sql/ \;

2、查找指定目录下大于300M的文件,并将其删除的两种方式

1
2
# find ./ -size +300M -delete
# find ./ -size +300M -exec rm -rf {} \;

3、查找指定目录下大于1G而小于1.5G的文件

1
# find ./ -size +1G -size -1.5G

4、查找指定目录下非.sh结尾的文件的两种方法

1
2
# find ./ -not -name '*.sh'
# find ./ ! -name '*.sh'

5、删除7天前对数据库的备份文件

1
# find /bakcup/ -type f -name '*.sql' -mtime +7 -exec rm -rf {} \;

6、查找当前目录下以.sh结尾的文件,但是排除子目录为script目录下的文件

1
# find . -path './script' -prune -o -name '*.sh'

7、查找当前目录下以.py结尾的文件,并将其修改为.pyc

1
# find ./ -name '*.py' -exec mv {} '{}c' \;

8、查找当前目录下所有文件,并把文件中的hello字符串替换成Hello

1
2
3
# echo 'hello world!' > test01.txt
# echo 'hello teacher!' > test02.txt
# find ./ -type f -exec sed -i 's@hello@Hello@g' {} \;   

四、find搭配日志重点阐述

  • 1、时间搜索

atime(access time):访问时间;指的是文件最后读取的事件,可以使用touch命令更改当前时间

ctime(change time):变更时间;指的是文件本身最后被变更的事件,变更动作是chmod、chgrp、mv等

mtime(modify time):修改时间,指的是文件内容最后被修改的事件,修改动作echo重定向、vim等

  • 2、时间语法

find PathName {-atime/-ctime/-mtime/-amin/-cmin/-mmin[-/+]num

第一个参数:查找文件的路径名

第二个参数:前面的字母a、c、m分别表示访问、变更、修改;time为日期,min为分钟

第三个参数:不该符号表示符合这个值得,'-'表示以内的,'+'表示以前的

  • 3、时间小练习

  • 查找当前目录中,当天被访问过的文件:时间单位为day

1
# find ./ -atime 0
  • 查找当前目录中,距离此刻5分钟以前10分钟以内被修改过的文件:时间单位为min

1
# find ./ -mmin -10 -min +5
  • 另外补充一个额外的命令xargs

  • 此命令的使用很类似于find的exec参数,比如:

1
2
3
# find ./ -type f | xargs chmod 755
# find ./ -type f | xargs echo '' > /root/filename.log
# find ./ -type f | xargs rm -rf

网上的一篇文章:

find mtime的事件算法:

     本文转自zys467754239 51CTO博客,原文链接:http://blog.51cto.com/467754239/1620000,如需转载请自行联系原作者

你可能感兴趣的文章
ASP.NET MVC框架开发系列教程
查看>>
First Bad Version
查看>>
Sublimetext3将空格转换为Tab
查看>>
最全数据结构详述: List VS IEnumerable VS IQueryable VS ICollection VS IDictionary
查看>>
MySQL案例-初步恢复: alter引起的从库无限Crash
查看>>
JVM垃圾回收
查看>>
JS编程建议——45:警惕嵌套量词和回溯失控
查看>>
9、部门计划制定与实施 - 部门管理经验谈
查看>>
人力资源中最常见的7张报表
查看>>
SAP MM IV中的Duplicated Invoice Check功能的测试
查看>>
僧志南眼中的江南春景
查看>>
SAP序列号管理中需要注意的六大要点
查看>>
如果你也想写公众号文章,从这里开始
查看>>
SAP WM LQ02 事务代码界面里不能为指定仓库号选择移动类型的问题对策
查看>>
SAP PP 新建工厂后的MRP运行
查看>>
HDOJ(HDU) 2113 Secret Number(遍历数字位数的每个数字)
查看>>
使用Redis来实现LBS的应用
查看>>
产生唯一随机码的方法分析
查看>>
Java Gradle入门指南之依赖管理(添加依赖、仓库、版本冲突) (转)
查看>>
su 与 su - 比较
查看>>