Linux中的查找指令:find
思维导图
为了使后面的讲解更加清晰,我们先附上find命令的思维导图
命令的使用
下面我们对find命令的参数和选项进行测试,熟悉该指令的应用。
option
一.与文件时间有关的参数的指令
前面我们提到了Linux文件系统的三个时间,他们分别是mtime,atime,ctime,下面我们先来进行一下简单的回顾:
- mtime:文件系统的修改时间,如果文件的内容被修改则会更新mtime。
- atime:文件系统的访问时间,如果对文件进行进行访问,并且保证atime=mtime,就会更新该文件的atime.
- ctime:文件系统的状态修改时间,如果对文件的某些属性,例如size,权限等进行了改变,便会更新该文件的ctime.
我们可以使用下面的指令来根据文件时间查找相关文件:
- find pathname -mtime n;
查找pathname下n天前更改了内容的文件(包括n天前这一天); - find pathname -mtine -n;
查找pathname下n天内更改了内容的文件; - find pathname -mine +n;
查找pathname下n天前更改了内容的文件(不包括n天前这一天);
例如:我们用find命令查找在/home/lzh/code下查找两天前更改文件内容的文件:
二.与系统用户有关的参数
- uid:uid为用户的ID号,它主要记录在/etc/passwd的文件当中,我们可以根据用户的ID号来查找它的文件。
例如:我们通过uid查找/home/lzh/code/下的lzh用户的文件
使用了find命令后,它把code目录下的文件都列举了出来,因为这些文件的所有者都为lzh. - gid:一个文件不光有其所有者,还有其所在的用户组,用户组所对应的ID号为gid,我们也可以通过find pathname -gid n的指令来查找用户组ID号为n所对应的文件。
- user:通过用户的ID号去查找文件其实是一种间接查找用户所拥有的文件的方式,我们还可以简单直接一点,直接通过用户名去查找文件。
例如:我们查找根目录下用户名为lzh的文件:
在查找出来的文件中,列出来了lzh目录下的文件以及root用户下所有者为lzh的文件。 - group:有了前面的直接根据用户名查找文件,我们还可以直接根据用户组名查找某一个用户组所对应的文件。
指令为: find pathname -group groupname 如果/etc/passwd文件中没有某个我们要查找的用户名,我们可以指定不带用户查询,它查找出来的结果为/etc/passwd中不存在的用户名.例如:我们在前面注释掉了leap1和leap6用户的相关内容,使用:
find / -nouser 查找根目录下不在/etc/passwd中存在的用户- 当然我们还可以查找/etc/group中不存在的用户组所对应的文件,直接使用
find pathname -nogroup 指令即可。
三.与文件权限及名称有关的参数
- name :首先,我们可以直接根据文件名来查找文件,直接使用-name参数即可。
例如:我们查找/home/lzh/code/TestCode/下名称包含test的文件: - 权限(mode):另外,我们还可以根据文件的权限来查找文件
使用下面的三条指令:
-perm mode:查找文件的权限恰好为mode的文件
例如:我们查找权限为u=rw,g=r,o=xxx的文件:
-perm -mode:查找文件权限“必须要全部包括mode的权限”的文件
这个意识是所查找的文件的权限必须要首先包括我们所指定的权限,其次还可以包括其他权限:
-pern +mode:查找文件的权限“包含任一mode的权限”的文件
这条指令大家可以拿去测试一下,只要包含了所指定的其中一个权限,find便会把该文件查找出来.
- size(文件大小):我们还可以根据文件的大小来查找文件,主要有下面两条指令:
find pathname -size +SIZE 查找指定目录下文件大小大于SIZE的文件
find pathname -size -SIZE 查找指定目录下文件大小大于SIZE的文件 - type(文件的类型)
Linux下文件的类型主要有:
f:正规文件
b,c:设备文件
d:目录
l:链接文件
s:套接字
p:管道p
我们来查找lzh用户中当前目录下所有的目录文件
总结:上面我们将主要能用到的find命令的指令都介绍了一遍,另外,我们还要注意一点的是find是在磁盘中查找的指令,其查找速度相对较慢。
还没有评论,来说两句吧...