linux find命令

一、概述: 
因为Linux下面一切皆文件,经常需要搜索某些文件来编写,所以对于linux来说find是一条很重要的命令。linux下面的find指令用于在目录结构中搜索文件,并执行指定的操作。它提供了相当多的查找条件,功能很强大。在不指定查找目录的情况下,find会在对整个系统进行遍历。即使系统中含有网络文件系统,find命令在该文件系统中同样有效。 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间。

1、命令格式 
find [查找目录] [查找规则] [查找完后的操作] 
即:find pathname -option [-print -exec -ok …]

2、命令功能 
用于在文件树中查找文件,并做相应的处理,(有可能访问磁盘)。

3、命令参数 
(1)pathname:表示所要查找的目录路径,例如”.”表示当前目录,”/”表示根目录。 
(2)-print:将find找到的文件输出到标准输出。 
(3)-exec:对找到的文件执行exec这个参数所指定的shell命令,相应的形式为:-exec command {} \; 将查到的文件进行command操作,”{}”就代替查到的文件。

注意: 
1)”{}”和”\”之间有一个空格。 
2)-ok:和-exec的作用相同,只不过-ok更加安全一点,在执行每一个命令之前,系统会让用户确定是否执行。

二、查找规则: 
1、根据文件名查找 
(1)-name :根据文件名进行查找,区分大小写精确查找。 
【例】 
这里写图片描述

(2)-iname:根据文件名查找,不区分大小写 
【例】 
这里写图片描述

(3)文件名通配符: 
“*”:通配任意的字符,可以是任何东西。 
【例】 
这里写图片描述

(4)”?”:可表示任意单个字符 
【例】 
这里写图片描述 
注:与上例比较得知,空不为单字符,所以不能查找“file”文件。

(5)”[]”表示通配括号里面的任意一个字符,注意[]里面的内容会被解析成单个字符。 
【例】 
这里写图片描述

2、根据文件的时间戳信息查找文件 
在根据时间戳信息查找的时候,所有的time都是以天为单位,min都是以分钟为单位。+n表示n以前,-n表示n以内。

(1)以最近一次存取的时间为参数 
1)-atime: 
A、find pathname -atime +n //表示n天前存取过的文件 
B、find pathname -atime -n //表示以当前时间为起点前n天内存取过的文件

2)-amin : 
A、find pathname -amin +n //表示n分钟前存取过的文件。 
B、find pathname -amin -n //表示以当前时间为起点前n分钟内存取过的文件。 
【例】 
这里写图片描述

(2)以最近一次修改的时间为参数 
1)-mtime: 
A、find pathname -mtime +n //表示n天前修改过的文件 
B、find pathname -mtime -n //表示以当前时间为起点前n天内修改 过的文件

2)-mmin: 
A、find pathname -mmin +n //表示n分钟前存取过的文件 
B、find pathname -mmin -n //表示以当前时间为起点前n修改 内存取过的文 
【例】 
这里写图片描述

(3)以最近一次更改的属性为参数 
1)-ctime: 
A、find pathname -ctime +n //表示n天前更改 过的文件 
B、find pathname -ctime -n //表示以当前时间为起点前n天内更改 过的文件

2)-cmin: 
A、find pathname -cmin +n //表示n分钟前更改过的文件 
B、find pathname -cmin -n //表示以当前时间为起点前n分钟内更改 过的文件 
【例】 
这里写图片描述

3、根据文件所属用户和所属组来查找文件 
(1)根据文件所有者查找文件:-user 
【例】 
这里写图片描述

(2)根据所有者所在的组查找:-group 
【例】 
这里写图片描述

4、根据nouser或nogroup查找 
(1)查找无有效属主的文件:-nouser 
find pathname -nouser 
(2)查找无有效属组的文件:-nogroup 
find pathname -nogroup 
5、-perm :根据权限来查找文件 
【例】 
这里写图片描述

6、根据uid和gid查找文件 
(1)根据文件的uid查找:-uid 
(2)根据文件所在组的gid查找:-gid

7、-type:根据文件类型查找文件 
(1)普通文件:f 
find pathname -type f 
【例】 
这里写图片描述

(2)目录文件:d 
find pathname -type d 
【例】 
这里写图片描述

(3)链接文件:l 
find pathname -type l 
(4)块设备文件:b 
find pathname -type b 
(5)字符设备文件:c 
find pathname -type c 
(6)管道设备文件:p 
find pathname -type p 
(7)套接字文件:s 
find pathname -type s

8、根据文件大小查找文件:-size 
(1)find pathname -size +n //表示大于n字节的文件 
(2)find pathname -size -n //表示小于n字节的文件 
(3)find pathname -size n //表示等于n字节的文件 
【例】 
这里写图片描述

9、按照参考文件的更改时间查找 
-newer :file1//查找更改时间比file1的更改时间距离当前时间近的文件 
【例】 
这里写图片描述

10、maxdepth和mindepth 
(1)-maxdepth 
1)-maxdepth n : 搜索深度距离当前目录最多n个子目录深度 
【例】 
这里写图片描述

(2)-mindepth 
2)-mindepth n :搜索深度距离当前目录至少n个子目录深度 
【例】 
这里写图片描述

11、查找路径下为空的文件或文件夹:-empty 
【例】 
这里写图片描述

12、按照硬连接的数目进行查找 
(1)-link n :硬连接连接数等于n的文件或目录 
【例】 
这里写图片描述

(2)-link +n :硬连接连接数大于n的文件或目录 
【例】 
这里写图片描述

(3)-link -n :硬连接连接数小于n的文件或目录 
【例】 
这里写图片描述

13、-a、-o,-not(也就是与、或、非) 
(1)-a:连接两个不同的条件(即两个条件必须同时为真) 
【例】 
这里写图片描述

(2)-o:连接两个不同的条件(两个条件只要满足一个即可) 
【例】 
这里写图片描述

(3)-not:对条件进行取反 
【例】 
这里写图片描述

14、查找完成之后的操作 
(1) -exec command {} \;: 其中,”{}”就代表查找之后返回的文件。 
【例】 
这里写图片描述

(2)-ok command {} \;-ok相对于-exec而言更安全一点,会让用户确定所要执行的操作。 
【例】 
这里写图片描述

查找文件
find ./ -type f

查找目录
find ./ -type d

查找名字为test的文件或目录
find ./ -name test

查找名字符合正则表达式的文件,注意前面的‘.*’(查找到的文件带有目录)
find ./ -regex .*so.*\.gz

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

查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,执行命令前需要确认)
find ./ -type d -ok ls {} \;

查找目录并列出目录下的文件(将找到的目录添加到ls命令后一次执行,参数过长时会分多次执行)
find ./ -type d -exec ls {} +

查找文件名匹配*.c的文件
find ./ -name \*.c

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

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

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

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

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

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

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

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

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

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

查找空文件或空目录
find ./ -empty

查找空文件并删除
find ./ -empty -type f -print -delete

查找权限为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

查找所有者为lzj的文件或目录
find ./ -user lzj

查找组名为gname的文件或目录
find ./ -group gname

查找文件的用户ID不存在的文件
find ./ -nouser

查找文件的组ID不存在的文件
find ./ -nogroup

查找有执行权限但没有可读权限的文件
find ./ -executable \! -readable

查找文件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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值