文件搜索之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
下一篇 2016-11-01

相关推荐

  • linux权限管理

    linux文件权限    文件的属性和权限的设置对于linux系统来说是相当重要的,如果对这一块的知识没有一个深入的了解,你的系统就有可能有很大的危险。那么首先我们来看一看文件的属性所对应的都是什么意思吧。 上图第一个字符是d,他代表了文件的类型,d的意思就是目录文件,那么除了目录文件还有什么文件呢?    …

    Linux干货 2016-08-04
  • IP地址的三种表示格式及在Socket编程中的应用

       使用TCP/IP协议进行网络应用开发的朋友首先要面对的就是对IP地址信息的处理。IP地址其实有三种不同的表示格式:        1)Ascii(网络点分字符串)-        2) 网络地址(32位无符号整形,网络字节序,大头) &nbsp…

    Linux干货 2015-04-10
  • 0812作业

    练习题 1、查找/var目录下属主为root,且属组为mail的所有文件 2、查找/var目录下不属于root、lp、gdm的所有文件 3、查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件 4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件 5、查找/etc目录下大于1M且类型为普通文件的所有文…

    Linux干货 2016-08-15
  • 马哥教育21期网络班—第三周课程+练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 who |cut -d" " -f1 |sort -u 2、取出最后登录到当前系统的用户的相关信息。 id `who | tail -n …

    Linux干货 2016-07-12
  • 关于 文本处理工具、正则表达式、grep 的简单举例

                              文本处理工具 抽取文本的工具 文件内容:less和cat 文件截取:head和tail 按列抽取:cut 按关键字抽取:grep 文件查看命令:cat,tac,rev cat […

    系统运维 2016-08-08
  • Linux的自动化安装实现

    在介绍自动化安装系统之前让我们来回顾一下系统的启动流程,系统的启动大概分为一下几个步骤:加电自检 boot sequence(mbr)— boot loader –>kernel(initramfs)—>rootfs  /sbin/init大概就是这么几个过程了,接下来来介绍系统的安装,安装系统虽然看起来简单,普…

    系统运维 2016-09-19