linux find详细信息,Linux之查找命令find简介

查找命令find简介

Linux使用过程中难免会遇到查找功能,类似于Windows中的搜索功能,如果想要找某个文件在什么地方,什么格式的文件等等。在Linux中我们可以使用find、locate、which、whereis等命令。接下来我们就简单说一下如何使用这几个命令查找文件。

一、which

which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

实例:

3c8ce6380daa33c267ccb0e2e66a02de.png

二、Whereis

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

3c8ce6380daa33c267ccb0e2e66a02de.png

三、Locate

locate命令其实是"find -name"的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/mlocate/mlocate.db),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

实例:

3c8ce6380daa33c267ccb0e2e66a02de.png

因为Locate命令必须在数据库定时更新或者手动updatedb后才可以查找最近操作过的文件,且如果系统比较大则创建索引所需时间比较长,locate查找文件名时在路径中包含也会被查找出来,查找结果模糊,所以我们在此不再多说,重点说一下find的用法。

四、find(重点)

find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。根据文件的各种属性去找到相对应文件;支持实时查找,精准查找,精确匹配,缺点是速度较locate慢,但是功能强大,是我们日常最常使用的命令之一。

1、find的基本用法

find  [option]… [查找路径] [查找条件] [处理动作]

查找路径:默认为当前目录

查找条件:默认为指定路径下的所有文件

处理动作:默认为显示至屏幕

2、查找条件:

2.1 -name "文件名称":支持使用globbing字符;

*:任意长度的任意字符

?:任意单个字符

[]:指定范围内的字符

[^]:指定范围外的字符

2.2 -iname "文件名称":查找时忽略大小写,

2.3 -user username :根据文件的属主查找;

例如:查找/var/目录属主为root且属组为mail的所有文件

3c8ce6380daa33c267ccb0e2e66a02de.png

2.4 -group grpname :根据文件的属组查找;find /home -user openstack –ls

2.5 -nogroup查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在

-nouser查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。

3c8ce6380daa33c267ccb0e2e66a02de.png

2.6组合条件查找:

与:-a

或:  -o

非;-not  !取反

例如:查找/home/目录下不属于root或bin的并且是链接类型的文件

3c8ce6380daa33c267ccb0e2e66a02de.png

2.7  -type查找某一类型的文件,如:

b –块设备文件

d –目录

c –字符设备文件

p –管道文件

l –符号链接文件

f –普通文件

s – socket文件

2.8根据文件的大小查找:size [+ | -]# UNIT

UNIT单元可以为:K、M、G等

find /var/log -size 2k      1

#unit:  #-1 < x <= # #表示查找的范围为小于#且大于#-1单位内大小的文件

-#unit:  x<=#-1           -#表示的其实是#-1范围内的文件如:-2k    1.1是不符合的,其实是x<=1k的文件

+#unit: x>#               +#表示的是大于#号的文件如:+2k则2.1,2.4符合条件

3c8ce6380daa33c267ccb0e2e66a02de.png

2.9根据时间戳查找:

以天为单位:

-[ atime |mtime |ctime ]    [+ | -]#

+#:  x>= (#+1)            +#表示#+1天之前被访问过的文件

-#:x< #             -#表示小于#天之内的访问过的文件例如:-2:最近一次访问时间为在两天之内

#:  # <= x < #+1     #表示在#和#+1天之内访问过的文件

以分钟为单位:同上

-amin   -mmin   -cmin

说明:Linux的文件有三个时间,分别是访问时间、修改时间、状态改动时间,分别对应的是atime(也就是access  time)、mtime(modify time)、ctime(change    time)。这三个时间有所不同。

atime:当文件的内容被访问的时候,比如使用命令cat,这时候访问时间会改变。

mtime:当文件的内容被改变的时候,比如用vi编辑器编辑之后保存,这时候修改时间会被改变。

ctime:当文件的属性或者权限被改变的时候,这时候状态改变时间会被改变。

可以用stat文件名来查看这三个时间。

实例:查找/test目录下最近一周内其内容修改过的,且不属于root或bin的文件

3c8ce6380daa33c267ccb0e2e66a02de.png

2.10根据权限查找:-perm [+|-] mode

mode: 与mode精确匹配

+mode:任何一类用户的权限,只要能包含对其指定任何一位权限即可,以属主为例;

-mode:每类用户指定的检查权限都匹配,为三类用户所有指定的检查权限都包含;

3c8ce6380daa33c267ccb0e2e66a02de.png

2.11处理动作:

-print :默认处理动作,显示

-ls :

-exec command {} \;      -exec find命令对匹配的文件执行该参数所给出的其他linux命令,注意{}和\;之间的空格;

-ok和– exec的作用相同,只不过和会人交互而已,OK执行前会向你确认是不是要执行。

3c8ce6380daa33c267ccb0e2e66a02de.png

2.12  find :一次性查找所有符合条件的所有文件,并一同传递给-exec或-ok后面的指定的命令;但是有些命令不能接受过长的参数;此时使用另一种方式;

find | xargs command

例如:当我们去删除比较多的文件是:比如本地目录下的/media/rehat/Packages中的rpm包时,如果执行find ./ -name “*.rpm” | rm –rf时,将不执行任何操作;

3c8ce6380daa33c267ccb0e2e66a02de.png

以上find等查找命令的一些使用操作,实际使用过程中find使用频率很高,遇到问题在与大家分享,如有不正之处,敬请指正!!!谢谢。

原创文章,作者:wxdz_2004(古雨秋),如若转载,请注明出处:http://www.178linux.com/4485

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值