文件搜索之find的使用

一.find介绍:

  find是Linxu中一个十分常用的文件查找工具,其工作原理是通过遍历启起始路径下文件层级结构完成的,其特点是查找速度慢,能做到实时查找和精确查找。

二.使用方法:

find  start_path search_conditions  action

1.statr_path:所要查找的文件的起始位置,默认是当前目录

2.earch_conditions:

(1)根据文件名进行查找:

 -name filename :根据文件名进行查找,filename支持glob风格的文件名通配

 -iname filename:根据文件名进行查找,filename支持glob风格的文件名通配,不过忽略文件名中的大小写

使用示例:查找当前目录下以txt结尾的所有文件

find ./ -name "*.txt" -print


(2)根据文件的所属关系进查找

-user username:查找属主为username的文件

-group groupname:查找数组为group的文件

-uid UID:查找属主为UID的文件

-gid GID:查找属组为GID的文件

-nouser :查找没有属主的文件

-nogroup:查找没有数组的文件

使用示例:查找/etc下没有属主的文件

find /etc -nouser -print

(3)根据文件类型进行查找

-type filetype

filetype有:

f:普通文件
b:块设备文件
d:目录
p:管道文件
l:链接文件
c:字符设备文件
s:套接字文件

使用示例:查找/etc目录下没有属主的普通文件

find /etc -nouser -type f -print

(4).根据文件的大小来查找

-size {+|-}#{K,M,G},可以以K,M,G为单位进行查找

#:查找大小为#的文件

+#:查找文件大小至少为#的文件

-#:查找文件大小至多为#的文件

使用示例:查找/etc下没有属组,大小为至少10k的普通文件

find /etc -nogroup -size +10k -type f -print

(5)根据时间戳进行查找

-atime day:查找在day天之内被访问过的文件

-ctime day:查找day天之内有改变的文件

-mtime day:查找day天之内有修改的文件

-amin min:查找min分钟之内被访问过的文件

-cmin min:查找min分钟之内被访问过的文件

-mmin min:查找min分钟之内被修改过的文件

使用示例:查找/etc下一个月之内被访问过,没有属主,大小为至多1M的普通文件

find /etc -atime 30 -nouser -size -1M -type f -print

(6)根据文件的权限进行查找

-perm {/|-} mode

mode:查找文件的权限为mode的文件,例如111查找属,属组,其他用户都有执行权限的文件

/mode:查找任何一类用户满足其中任何一个权限位的文件,例如/111,查找属主,属组,或其他用户之中任意一个具有执行权限的文件

-mode:查找所有用户的所有位都满足的文件,例如-111,查找权限小于111的文件,即每一位用户权限都不能超过1的文件

使用示例:查找/etc下一个月之内被访问过,大小为至多1M,属主,属组,或其他用户其中之一能执行的文件

find /etc -atime 30 -size -1M -perm /111 -print

(6).组合测试

-a : 与运算逻辑,默认也是这种组合逻辑

-o:或运算逻辑

-not,!:非运算逻辑

使用示例:查找/etc中没有属主或者至少为1M的文件

find /etc -nouser -o -size +1M -print


(7)根据文件是否为空来查找

-empty

使用示例:查找/etc下的空文件

find /etc -empty -print

3.action:默认为打印查找到的文件名,也可以通过 -exec command {} \的方式对查找到的文件进行指定操作

-print:打印查找到的文件名,也是默认处理方式

-ls :将查找到的文件使用ls列出

-exec command {} \ :对查找到的每个文件执行command命令

当所要执行的命令要接受较长的命令参数时,要通过管道送给xargs来执行,例如 find ./ -name "*.txt|xarg ls -l -h {} \

使用示例:将/etc下所有以.txt结尾的文件找到并删除之

find /etc -name "*.txt" | xarg rm -f {} \ 

原创文章,作者:zhangbao,如若转载,请注明出处:http://www.178linux.com/56766

(0)
zhangbaozhangbao
上一篇 2016-11-01 22:15
下一篇 2016-11-01 23:02

相关推荐

  • 马哥教育网络班21期+第14周课程练习

    系统的INPUT和OUTPUT默认策略为DROP; iptables -P INPUT DROP iptables -P OUTPUT DROP 1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响…

    Linux干货 2016-10-09
  • 管窥Linux史

    管窥Linux史 众所周知,绝大部分发行版本都被称为类Unix系统,要说Linux就应该先了解Unix的历史,Unix的起源应该赘述MULTICS的历史,Unix的父辈是颇具开拓性的Multics项目…… Unix创世纪 二战结束以后,冷战开始了。1957年苏联发射了第一颗人造卫星,进而开始筹备发射载人宇宙飞船。与此同时,美国宇航局的研究却连连受挫。航天领域…

    Linux干货 2016-10-14
  • 网络管理

    1、集线器、交换机、路由器 2、路由器与交换机的主要区别体现在以下几个方面: 1)工作层次不同:最初的的交换机是工作在OSI/RM开放体系结构的数据链路层,也就是第二层,而路由器一开始就设计工作在OSI模型的网络层。由于交换机工作在OSI的第 二层(数据链路层),所以它的工作原理比较简单,而路由器工作在OSI的第三层(网络层),可得到更多的协议信息,路由器可…

    Linux干货 2016-09-08
  • DNS详解

    概述     互联网访问绝大多数都是基于域名的访问,互联网访问的基础是基于IP来实现的,因此,需要有一种将域名解析成IP的机制,让用户在利用域名访问时,自动将域名转换成为对应的IP,这就是DNS的功能,本章将介绍一些DNS相关的内容,具体分为:     1、DNS的基础概念 &n…

    Linux干货 2016-10-08
  • Centos图形界面和命令行界面切换—-使用init

    1、从图形界面切换到命令行界面      点击Applications–System Tools–Terminal。    打开后输入: su root(运行init需要管理员权限) 按回车,输入init 3或者init 2都可以,然后回车就可以    进入命令行界…

    Linux干货 2015-11-10
  • Linux 练习册1

    一、文件通配符练习题:          1、显示/var目录下所有以 l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录。         (1)ls  l*[[:digit:]]*[[:lower:]]    &n…

    2017-07-30