Linux中find用法

Linux下查找文件的命令有两个;locate 和 find

 

首先说下locate,locate这个命令是对其生成的数据库进行遍历(生成数据库的命令:updatedb),这一特性决定了用locate查找文件速度很快,但是locate命令只能对文件进行模糊匹配,在精确度上来说差了点,简单介绍下它的两个选项:

 #locate 

       -i        //查找文件的时候不区分大小写 比如:locate  –i   passwd

       -n       //只显示查找结果的前N行     比如:locate  -n  5   passwd

Linux中find常见用法示例:


一、根据文件名查找

      #  -name       //根据文件名查找(精确查找)

      #  -name  "*.txt"  //根据关键字查找

      #  -iname       //根据文件名查找,但是不区分大小写

     #  -name  a*    在当前目录下查找以a开始的文件


wKioL1c9TG3RzTYMAAAQXp5l-p4119.pngwKiom1c9TznBSpyOAAAW-PmYjrs915.png

二、?表示  通配任意的单个字符

wKiom1c9S7XQC_EiAAAK0zta1lQ223.png

        # -user   username       #按文件属主来查找

        # -group    groupname     #按组来查找

wKioL1c9TM2xqqdXAAAPZ7-KeQ8683.png

三、根据文件类型查找

   -type      -name 

         f     // 普通文件

         d     //目录文件

         l     //链接文件

         b     //块设备文件

         c     //字符设备文件

         p     //管道文件

         s     //socket文件

 eg.find .-type d|sort   //查找当前所有目录并排序

wKioL1c9UU7A6PGCAAAVgXOjqMY640.pngwKiom1c9UTOx7Qp4AAALgOzBWV4768.png

四、根据文件权限查找文件

  -perm

     #find  /tmp  -perm  755   //查找在/tmp目录下权限是755的文件


     #find  /tmp  -perm  +222  //表示只要有一类用户(属主,属组,其他)的                            匹配写权限就行

     #find  /tmp  -perm  -222   //表示必须所有类别用户都满足有写权限

wKioL1c9Tb_T2HoEAAAnrFJpOz4725.png

五、按文件大小查找


      find / -size 250c (查找1,50字节大小的文件,c表示字节)

      find / -size +2500c (查找大于1,500字节大小的文件,+表示大于)    

      find / -size +2500c (查找小于1,500字节大小的文件,-表示小于)

wKioL1c9Tgij30OrAAAfdtnNEH0405.png

六、按时间查找

modification time(mtime) 

当该文件的“内容数据”更改时,就会更新这个时间。 内容数据指的是文件的内容,而不是文件的属性或权限。

status time(ctime)

当该文件的“状态”(status)改变时,就会更新这个时间。举例来说,像是权限与属性被更改了,都会更新这个时间。

access time(atime)

当“该文件的内容被取用”时,就会更新这个读取时间(access)。举例来说,我们使用cat去读取/etc/man.config,就会更新该文件的atime了。


     访问一个目录其atime改变,mtime ctime不变;

     修改一个目录:在一个目录下touch一个文件,mtimectime会改变,atime不一定会变;

      # find / -mtime -n +n 文件数据的最后修改时间(n为天数) (-n为n天内,+n为n天前)

      # find / -atime -n +n文件数据的最后存取时间(n为天数)  

      # find / -ctime -n +n 文件数据的最后更改时间(n为天数) 

      # find / -mmin  -n +n文件数据的最后修改时间(n为分钟)(-n为n分钟内,+n为n分钟前)

      # find / -amin  -n +n文件数据的最后存取时间(n为分钟)  

      # find / -cmin  -n +n 文件数据的最后更改时间(n为分钟) 


  例如:

     # find /Bit    -mtime -2    在/Bit下查最近两天内改动过的文件

     # find /Bit     -atime -1    查/Bit下1天之内被存取过的文件

     # find /Bit     -mmin -500   在/Bit下查最近500分钟内改动过的文件

wKiom1c9TWOD-Jp7AAAaFZNJd3A828.pngwKioL1c9TAjg5IcnAAASG7fUhP4669.png

      ls -lc filename  列出文件的 ctime

      ls -lu filename  列出文件的 atime

      ls -l  filename  列出文件的 mtime

wKioL1c9Tw_AmdEXAAAay_KsBME040.png

七、使用mindepth和maxdepth限定搜索指定目录的深度
   在root目录及其子目录下查找test文件。

  在root目录下及其最大2层深度的子目录中查找test文件.

 在root目录下及其最大3层深度的子目录中查找test文件.

  在3-5层中优先查找文件内容名为test的文件

wKioL1c9VCeAqXtfAAAoTFP9t_Q717.png

八、其他例子

 1、无错误查找:

      # find / -name access_log 2 >/dev/null

 2、逻辑

      -and 条件与 -or 条件或

 3、查找字符串

     # find . -name '*.html' -exec grep 'mailto:'{}

 4、其它:

      # find / -empty 空白文件、空白文件夹、没有子目录的文件夹

     # find / -false 查找系统中总是错误的文件

     # find / -fstype type 找存在于指定文件系统的文件,如type为ext2

     # find / -gid n 组id为n的文件

     # find -name april* fprint file  

         在当前目录下查找以april开始的文件,并把结果输出到file中

     # find -name ap* -o -name may*    查找以ap或may开头的文件

     # find /mnt -name tom.txt -ftype vfat

        在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件

     # find /mnt -name t.txt ! -ftype vfat   

        在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件

     # find /tmp  -name wa* -type l       

        在/tmp下查找名为wa开头且类型为符号链接的文件

     # find /home -mtime -2   在/home下查最近两天内改动过的文件

     # find /home -newer tmp.txt  在/home下查更新时间比tmp.txt近的文件或目录

     # find . -size +3000k -exec ls -ld {} ;

     # find *.c -exec cp '{}' /tmp ';'


本文出自 “土豆_” 博客,请务必保留此出处http://10738432.blog.51cto.com/10728432/1774555

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值