linux find命令解析与示例

本文详细介绍了Linux下find命令的功能和使用方法,包括各种选项及其应用场景,例如查找特定类型的文件、按时间戳筛选文件等。

此文目录结构为:

  • find命令功能
  • find用法摘要
  • 选项
  • 常用用法示例

find命令功能

   find - 在指定目录中查找具有某些特征或者属性的文件

用法摘要

   find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

选项

-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算; 
-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
 -atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
 -cmin<分钟>:查找在指定时间之时被更改过的文件或目录; -cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
 -ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
 -daystart:从本日开始计算时间; -depth:从指定目录下最深层的子目录开始查找;
 -expty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
 -exec<执行指令>:假设find指令的回传值为True,就执行该指令;
 -false:将find指令的回传值皆设为False
  -fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件
   -follow:排除符号连接;
   -fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;
   -fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;
   -fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;
   -fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;
   -gid<群组识别码>:查找符合指定之群组识别码的文件或目录; -group<群组名称>:查找符合指定之群组名称的文件或目录;
    -ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;
    -iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;
    -inum:查找符合指定的inode编号的文件或目录; 
    ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;
    -iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;
    -links<连接数目>:查找符合指定的硬连接数目的文件或目录; -iname<范本样式>:指定字符串作为寻找符号连接的范本样式;
    -ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
    -maxdepth<目录层级>:设置最大目录层级; -mindepth<目录层级>:设置最小目录层级;
    -mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
    -mount:此参数的效果和指定“-xdev”相同;
    -mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算
     -name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
     -newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
     -nogroup:找出不属于本地主机群组识别码的文件或目录; -noleaf:不去考虑目录至少需拥有两个硬连接存在;
     -nouser:找出不属于本地主机用户识别码的文件或目录; -ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;
     -path<范本样式>:指定字符串作为寻找目录的范本样式; -perm<权限数值>:查找符合指定的权限数值的文件或目录;
     -print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串; -print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
     -printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
     -prune:不寻找字符串作为寻找文件或目录的范本样式; -regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;
     -size<文件大小>:查找符合指定的文件大小的文件; -true:将find指令的回传值皆设为True;
     -typ<文件类型>:只寻找符合指定的文件类型的文件; -uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
     -used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
     -user<拥有者名称>:查找符和指定的拥有者名称的文件或目录; 
      -xdev:将范围局限在先行的文件系统中
       -xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。

选项太多,我们还是挑几个重要的常用的来演练一下用法吧

1.列出当前目录及子目录下所有文件和文件夹

 find . 

这里写图片描述
2.在/home目录下查找以.txt结尾的文件名

 find /home -name "*.txt"
 在当前目录下查找指定文件
 find . -name "result.txt"

这里写图片描述
3.当前目录及子目录下查找所有以.txt和.pdf结尾的文件

 find . \( -name "*.txt" -o -name "*.pdf" \)
 或 find . -name "*.txt" -o -name "*.pdf" 

4.匹配文件路径或者文件

 find /usr/ -path "*local*"

5.查找名字符合正则表达式的文件,注意前面的‘.*’(查找到的文件带有目录)

find ./ -regex .*so.*\.gz

6.查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,没有选项-print时文件列表前一行不会显示目录名称)

find ./ -type d -print -exec ls {} \;

7.查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,执行命令前需要确认)

find ./ -type d -ok ls {} \;

8.找到test文件后先打印文件名,然后打印test文件的内容

find ./ -name test -print -exec cat {} \;
不打印test文件名,只打印test文件的内容
find ./ -name test -exec cat {} \;

这里写图片描述

9.查找文件更新日时在距现在时刻二天以内的文件

find ./ -mtime -1

这里写图片描述

查找文件更新日时在距现在时刻二天以上的文件
find ./ -mtime +2

查找文件更新日时在距现在时刻一天以上二天以内的文件
find ./ -mtime 2

查找文件更新日时在距现在时刻二分以内的文件
find ./ -mmin -2

查找文件更新日时在距现在时刻二分以上的文件
find ./ -mmin +2

查找文件更新日时在距现在时刻一分以上二分以内的文件
find ./ -mmin 2

查找在指定时间曾被存取过的文件或目录,单位以分钟计算;

这里写图片描述

10.查找文件更新时间比文件abc的内容更新时间新的文件

find ./ -newer abc

查找文件访问时间比文件abc的内容更新时间新的文件
find ./ -anewer abc

11.查找空文件或空目录

find ./ -empty

12.查找空文件并删除

find ./ -empty -type f -print -delete

13.查找权限为644的文件或目录(需完全符合)

find ./ -perm 664

这里写图片描述
查找用户/组权限为读写,其他用户权限为读(其他权限不限)的文件或目录
find ./ -perm -664

查找用户有写权限或者组用户有写权限的文件或目录
find ./ -perm /220
find ./ -perm /u+w,g+w
find ./ -perm /u=w,g=w

查找所有者权限有读权限的目录或文件
find ./ -perm -u=r

查找用户组权限有读权限的目录或文件
find ./ -perm -g=r

查找其它用户权限有读权限的目录或文件
find ./ -perm -o=r

14.查找所有者为lzj的文件或目录

find ./ -user lzj

15.查找组名为gname的文件或目录

find ./ -group gname

16.查找文件的用户ID不存在的文件

find ./ -nouser

17.查找文件的组ID不存在的文件

find ./ -nogroup

18.查找有执行权限但没有可读权限的文件

find ./ -executable \! -readable

19.查找文件size小于10个字节的文件或目录

find ./ -size -10c

查找文件size等于10个字节的文件或目录
find ./ -size 10c

查找文件size大于10个字节的文件或目录
find ./ -size +10c

这里写图片描述
查找文件size小于10k的文件或目录
find ./ -size -10k

查找文件size小于10M的文件或目录
find ./ -size -10M

查找文件size小于10G的文件或目录
find ./ -size -10G

20.查当前目录下的所有普通文件

# find . -type f -exec ls -l {} \; 
-rw-r–r–    1 root      root         34928 2003-02-25   ./conf/httpd.conf 
-rw-r–r–    1 root      root         12959 2003-02-25   ./conf/magic 
-rw-r–r–    1 root      root          180 2003-02-25   ./conf.d/README 

21.在/ l o g s目录中查找更改时间在5日以前的文件并删除它们:

$ find logs -type f -mtime +5 -exec   -ok   rm {} \;

22.查询当天修改过的文件

[root@book class]# find   ./   -mtime   -1   -type f   -exec   ls -l   {} \;

23.基于目录深度搜索

向下最大深度限制为3
find . -maxdepth 3 -type f
搜索出深度距离当前目录至少2个子目录的所有文件
find . -mindepth 2 -type f

24.根据文件时间戳进行搜索

find . -type f 时间戳

25.删除当前目录下所有.txt文件

 find . -type f -name "*.txt" -delete

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值