我们都知道,Linux下一切皆文件,所以对于Linux来说 find 是一条很重要的命令。Linux下面的 find 指令用于在目录结构中搜索文件,并执行指定的操作。它提供了相当多的查找条件,功能比较强大。在不指定查找目录的情况下, find 会对整个系统进行遍历。即使系统中含有网络文件系统,find 命令在该文件系统中同样有效。在运行一个非常消耗资源的 find 命令时,很多然都倾向于把它们放在后台运行,因为遍历一个大的文件系统可能会花费很长的时间。
1.命令格式
find [查找目录] [查找规则] [查找完之后的操作]
2.命令功能
用于在文件树中查找文件,并做相应的处理,(有可能也会访问磁盘)。
3.命令参数
pathname:表示所要查找的目录路径,例如“.”表示当前目录,“/”表示根目录。
-print:将find找到的文件输出到标准输出。
-exec:对找到的文件执行exec这个参数所指定的shell命令,相应的形式为:-exec command {} \;将查找到的文件进行command操作,“{}”就代替查找到的文件,注意“{}”和“\”之间有一个空格。
-ok:和-exec的作用相同,只不过-ok更加安全一点,在执行每一个命令之前,大都会让用户确定是否执行。
查找规则:
1.根据文件名查找
1.1.-name(根据文件名进行查找,区分大小写精确查找)
1.2.-iname(根据文件名查找,不区分大小写)
1.3.文件名通配符:“*”表示统配任意的字符,可以是任何东西
1.4.“?”表示通配任意单个字符
1.5.“[]”表示通配括号里面的任意一个字符,注意[]里面的内容会被解析成单个字符
2.根据文件的时间戳信息查找文件
在根据时间戳信息查找的时候,所有的 time 都是以“天”为单位,min 都是以分钟为单位。 +n表示n以前,-n表示n以内。
2.1.以最近一次存取的时间为参数
-atime:
find pathname -atime +n(表示n天前存取过的文件)
find pathname -atime -n(表示以当前时间为起点前n天内存取过的文件)
-amin:
find pathname -amin +n(表示n分钟前存取过的文件)
find pathname -amin -n(表示以当前时间为起点前n分钟存取过的文件)
2.2.以最近一次修改的时间为参数
-mtime:
find pathname -mtime +n(表示n天前修改过的文件)
find pathname -mtime -n(表示以当前时间为起点前n天前修改过的文件)
-mmin:
find pathname -mmin +n(表示n分钟前存取过的文件)
find pathname -mmin -n(表示以当前时间为起点前n分钟存取过的文件)
2.3.以最近一次更改的时间为参数
-ctime:
find pathname -ctime +n(表示n天前更改过的文件)
find pathname -ctime -n(表示以当前时间为起点前n天内更改过的文件)
-cmin:
find pathname -cmin +n(表示n分钟前更改过的文件)
find pathname -cmin -n(表示以当前时间为起点前n分钟内更改过的文件)
3.根据文件所属用户和所属组来查找文件
3.1-user(根据文件所有者查找文件)
3.2.-group(根据所有者所在的组查找)
4.根据nouser 或 nogroup查找
4.1.-nouser(查找无有效属主的文件)
find pathname -nouser
4.2.-nogroup(查找无有效属组的文件)
find pathname -nogroup
5.-perm:根据权限来查找文件
6.根据uid 和 gid 查找文件
6.1.-uid(根据文件的uid查找)
6.2.-gid(根据文件所在组的gid查找)
7.-type:根据文件类型查找文件
7.1.f(表示普通文件)
find pathname -type f
7.2.d(表示目录文件)
find pathname -type d
7.3.l(表示链接文件)
find pathname -type l
7.4.b(表示块设备文件)
find pathname -type b
7.5.c(表示字符设备文件)
find pathname -type c
7.6.p(表示管道设备文件)
find pathname -type p
7.7.s(表示套接字文件)
find pathname -type s
8.-size:根据文件大小查找文件
8.1.find pathname -size +n(表示大于n字节的文件)
8.2.find pathname -size -n(表示小于n字节的文件)
8.3.find pathname -size n(表示等于n字节的文件)
9.按照参照文件的更改时间查找
-newer:file1(查找更改时间比file1的更改时间距离当前时间近的文件)
10.maxdepth和mindepth
10.1.-maxdepth
-maxdepth n:搜索深度距离当前目录最多n个子目录深度
10.2.-mindepth
-mindepth n:搜索深度距离当前目录至少n个子目录深度
11.-empty:查找路径下为空的文件或者文件夹
12.按照硬连接的数目进行查找
12.1.-link n:硬连接连接数目等于n的文件或者目录
12.2.-link +n:硬连接连接数目大于n的文件或者目录
12.3.-link -n:硬连接连接数目小于n的文件或者目录
13.-a、-o、-not(也就是与、或、非)
13.1.-a:连接两个不同的条件(两个条件必须同时为真)
13.2.-o:连接两个不同的条件,两个条件只要有一个满足即可
13.3.-not:对条件进行取反
14.查找完成之后的操作
14.1.-exec command {} \;(其中,“{}”就代表查找之后返回的文件)
14.2.-ok command {} \;(-ok相对于-exec而言更安全一点,会让用户确定所要执行的操作)