Linux下find指令的详解

我们都知道,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而言更安全一点,会让用户确定所要执行的操作)


猜你喜欢

转载自blog.csdn.net/ypt523/article/details/80454892