find指令
我们知道,linux下面一切皆文件,所以对于linux来说find是一条很重要的命令。linux下面的find指令用于在目录结构中搜索文件,并执行指定的操作。它提供了相当多的查找条件,功能很强大。在不指定查找目录的情况下,find会在对整个系统进行遍历。即使系统中含有网络文件系统,find命令在该文件系统中同样有效。 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间。
1、命令格式
find [查找目录] [查找规则] [查找完后的操作]
即:find pathname -option [-print -exec -ok …]
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而言更安全一点,会让用户确定所要执行的操作。