天天看点

Linux文件查找Find命令使用解析

 Find从英语字面上的意思译过来是发现,找到的意思,它在linux中作为文件查找命令也十分形象,Find虽说只是个命令,但其功能非常强大。

        好,下面来说说Find,先来说说它的基本语法格式:

find [查找路径]  [查找标准]  [处理动作]

查找标准:

        -name 文件名称查找

        -iname 不区分大小写查找

        -user 根据文件属主查找

        -group 根据文件属组查找

        -uid 根据Uid查找

        -gid 根据Gid查找

        -nouser 查找没属主的文件

        -nogroup 查找没属组的文件

组合条件:

        -a 与

        -o 或

         !非

文件类型:

        -type

按文件大小查找:

        -size

按时间戳查找:

        -atime

        -mtime

        -ctime

        -amin

        -mmin

        -cmin

按权限查找:

        -perm [+|-] Mode

        没有+-表示精确匹配

        +Mode 表示任何一类用户的任何一位权限匹配即可

        -Mode  表示每类用户的每位权限都匹配

处理动作:

        -print 显示

        - ls 详细信息

        -exec Command {} \;

example:find /tmp -atime +30 -exec mv {} {}.old \;

这里再引入一个命令:

 xargs - build and execute command lines from standard input

可以通过管道从标准输入建立和执行命令行

看了这么多,下面举几个例子吧:

1.查/tmp下属主属组不属于root,并且在5分钟之内改过的文件。

# find /tmp/ ! -user root -a ! -group root  -mmin -5  -ls

<a href="http://s3.51cto.com/wyfs02/M02/25/B9/wKiom1NmJJCjfVyCAAJtmG623k4928.jpg" target="_blank"></a>

2.查找/usr下不属于root,bin,或者tuchao的文件,并复制到/tmp下。

# find /usr   ! \( -user root -o -user bin -o -user tuchao \) -exec cp {} /tmp  \;

看看,是不是都拷贝过去了。

<a href="http://s3.51cto.com/wyfs02/M02/25/B9/wKiom1NmKyXAl5ZsAAS5MKeGqh4321.jpg" target="_blank"></a>

3.查找当前系统上,一周内内容修改过,且没有属主属组的文件,找到后cp到/tmp/good目录里。

# find / -mtime -7 -a -nouser -a -nogroup | xargs -i cp {} /tmp/good

看这里使用了xargs

<a href="http://s3.51cto.com/wyfs02/M00/25/B9/wKiom1NmLtXj-VYoAAWCtJhg3vw701.jpg" target="_blank"></a>

看图片前几行,找到的文件是不是都没属主属组的,当然这些文件都是我做的为了测试用的。

这篇就写到这也差不多了,例子也基本贯穿了难点,慢慢体会吧!

有问题欢迎与我交流——笔者QQ:1183710107

本文转自qw87112 51CTO博客,原文链接:http://blog.51cto.com/tchuairen/1406295

继续阅读