Linux之find学习--详解

Linux find命令详解
本文介绍了Linux系统中的find命令,详细解释了如何通过find命令按文件名、类型、大小及权限等条件查找文件,并展示了如何结合逻辑操作符进行复杂查询。

Linux工具之find命令

  在Linux系统中有两个查找文件的命令,一个是locate,另一个则是find。这两个命令都是在文件系统上查找符合条件的文件,在这里简要介绍下locate,再详细介绍下find,locate是基于数据库来查找文件的。假如说把文件系统比作一本书,locate是根据目录来查找符合条件的文件,而find是通过对整本书进行查找,所以对于查找命令来说,locate的速度比find的速度快,但是find比locate要更精确。

  find是一个实时查找的一个工具。

  find的选项是也分很多类,这里只说一些常用的选项:

  1.可以根据文件名来查找:

    如 find . -name "clean*"   被引号引起来的名字支持globbing文件扩展匹配,而不是正则表达式。

    注意:下面的find后面都有一个点,表示在当前目录下查找,请勿忽略

    find . -iname "clean*"  -iname:表示忽略匹配的文件名的大小写

    find . -user root  -user:是查找属主为root的文件

    find . -group root  -group:是查找属组为root的文件

    find . -uid 1001  -uid:是查找文件属主的uid为1001的文件

    find . gid 1001  -gid:是查找文件属组的gid为1001的文件

  2.可以根据文件类型查找:

    find /tmp -type f     查找/tmp目录下的普通文件

    find /tmp -type d    查找/tmp目录下的所有目录

    find /tmp -type l     查找/tmp目录下的所有链接文件

    ... ...

  以此类推b(块设备文件),c(字符文件),s(套接字文件),p(管道文件)

  说明一点:以上所有命令后都可以接 -ls以显示匹配出的文件的详细信息。

  3.也可以进行逻辑的组合查找:

  与:-a      

  或:-o

  非:!或者-not

举个栗子:find /tmp -nouser -a -type f -ls     -nouser:是匹配没有属主的文件(同样也可以使用-nogroup没有属组的文件)

这个例子的意思是在/tmp目录下查找没有属主且文件类型为普通文件并列出其详细信息。

  4.还可以根据文件的大小来查找:

选项为-size,如:find /tmp -size 174k  查找的文件的大小经过单位换算后为174k的文件

    还可以find /tmp -size +174k   表示查找的文件大于174k的

         find /tmp -size -174k    表示查找的文件大小小于174k的正常文件

  5.还可以根据权限来查找:

选项为-perm [mode|/mode|-mode]三种模式

mode为精确权限的查找:find /tmp -perm 666  查找文件权限为只能是666的文件

    find /tmp -perm /666  表示任何一类用户(u,g,o三类用户)的权限任何一类用户满足perm的权限即可

    find /tmp -perm -666  表示每一类用户的权限中的每一位同时符合条件即可满足

    例如:find /tmp -perm -222  表示每类用户都有写权限

  find / -perm /022 -ls 表示在根目录查找g有w权限或者o有w权限的并详细列出文件信息。注意:022中的0表示不是属主的权限,而是表示不关心属主到底是什么权限,什么都行。。

  查找出的文件可以直接用find使用命令来进行处理,常见的有

  -ls:列出符合条件的文件的详细信息

  -print:为打印输出到屏幕,默认为此选项

  -delete:把匹配出来的删除,动作极其危险。

  -ok COMMAND {} \;对查找出的文件由COMMAND来执行,每个文件都需要用户来再次确认当文件数很多时就不适用了。此时可以使用下面的命令。

  -exec COMMAND {} \;  和上一个命令一样,但不用每个文件都确认执行

  -fls /path/to/somefile:把查找出来的文件的长格式信息存储到somefile文件中

还可以根据时间戳来查找  

  以天为单位进行查找
  -atime:访问时间
  #:过去的第#天,距此刻为止# * 24 =< x < (#+1) * 24
  -#:#天内
  +#:过去无穷时间到#+1天
  e.g:
  假设3天
  -atime 3:表示过去的4天前3天或3天后
  -atime -3:表示3天内的文件
  -atime +3:表示4天之前的文件
  -mtime:修改时间
  -ctime:改变时间
  以分钟为单位进行查找
  -amin
  -mmin
  -cmin

最后再写个练习

  查找/tmp目录下不属于root,bin或hadoop的所有文件或目录;用两种方法;
  find /tmp -not -user root -a -not -user bin -a -not -user hadoop -ls
  find /tmp -not \( -user root -o -user bin -o -user hadoop \)

 

转载于:https://www.cnblogs.com/yuxinda00/p/8893801.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值