文件搜索之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

相关推荐

  • sed文本处理器

    文本处理三剑客之一

    Linux干货 2017-12-10
  • btrfs文件系统及管理

      什么是btrfs? Btrfs(B-tree文件系统,通常念成Butter FS,Better FS或B-tree FS),linux文件系统,具有写时复制COW(copy-on-write),改善ext3文件系统单文件大小限制,并加入其他特性,如可写快照,快照的快照,内建RAID,子卷(subvloume),专注于容错,修复和易于管理。单文件…

    系统运维 2016-05-13
  • CentOS7中nmcli网络管理及使用详解

    一、网络接口配置工具    在CentOS7系统中,强烈推荐使用nmcli管理网卡。下面记录的是nmcli的使用详解。    网络接口配置工具NetworkManager(简称为nmcli),该命令的作用是:可以查询网络连接的状态,也可以用来管理网络(设置系统每个网卡的特性)。该命令如何使用呢,其实可以用"n…

    Linux干货 2016-09-11
  • RHCS问题汇总-深圳Eric

    拓补图: 服务器用了4个网卡 两个万兆网卡做了bond连到netgear交换机,交换机端口access 30 对应IP段10.199.16.0/22,网关10.199.16.1做在netgear上 两个千兆网卡做了bond连到cisco 3750交换机,交换机端口truck 30 40 1001-1300 对应IP段10.199.16.0/22、10.176…

    Linux干货 2016-06-22
  • ☞磁盘管理{分区表备份与恢复;修复fstab记录错误;制作swap分区;磁盘配额演示;}

    磁盘管理{ 分区表备份与恢复;错误fstab修复;swap分区;磁盘配额;}

    Linux干货 2016-09-04
  • Linux用户和组的相关管理命令(一、用户的相关命令)

    Linux是一个可以实现多用户登录的操作系统,通过su – 用户名 可以进行用户之间的切换,从而完成不同登录用户下对私有文件的操作,同时,每个用户有且只有一个主组,但是可以有零个或多个附加组,每个组可以是一个用户的主组,同时还可以是多个用户的附加组。因此,熟练掌握用户和组的相关命令十分重要。 首先,要了解用户和组的配置文件各有两个: 与用户相关的…

    2017-07-22