• Linux下find命令详解


     
    Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。
     

    Linux中find常见用法示例·

    find    path    -option    [    -print ]    [ -exec    -ok    command ]    {} \;

    #-print 将查找到的文件输出到标准输出
    #-exec    command    {} \;       -----将查到的文件执行command操作,{} 和 \;之间有空格
    #-ok 和-exec相同,只不过在操作前要询用户

    -name    filename               #查找名为filename的文件
    -perm                         #按执行权限来查找
    -user     username              #按文件属主来查找
    -group groupname              #按组来查找
    -mtime    -n +n                 #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
    -atime     -n +n                #按文件访问时间来查GIN: 0px">-perm                          #按执行权限来查找
    -user     username              #按文件属主来查找
    -group groupname              #按组来查找
    -mtime    -n +n                 #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
    -atime     -n +n                #按文件访问时间来查找文件,-n指n天以内,+n指n天以前 
    -ctime     -n +n                #按文件创建时间来查找文件,-n指n天以内,+n指n天以前 
    -nogroup                      #查无有效属组的文件,即文件的属组在/etc/groups中不存在
    -nouser                       #查无有效属主的文件,即文件的属主在/etc/passwd中不存
    -newer    f1 !f2                找文件,-n指n天以内,+n指n天以前 
    -ctime     -n +n                #按文件创建时间来查找文件,-n指n天以内,+n指n天以前 
    -nogroup                      #查无有效属组的文件,即文件的属组在/etc/groups中不存在
    -nouser                       #查无有效属主的文件,即文件的属主在/etc/passwd中不存
    -newer    f1 !f2                #查更改时间比f1新但比f2旧的文件
    -type      b/d/c/p/l/f          #查是块设备、目录、字符设备、管道、符号链接、普通文件
    -size       n[c]                #查长度为n块[或n字节]的文件
    -depth                        #使查找在进入子目录前先行查找完本目录
    -fstype                       #查更改时间比f1新但比f2旧的文件
    -mount                        #查文件时不跨越文件系统mount点
    -follow                       #如果遇到符号链接文件,就跟踪链接所指的文件
    -cpio                         #对匹配的文件使用cpio命令,将他们备份到磁带设备中
    -prune                        #忽略某个目录

    更多信息可以查看:《Linux下find命令详解http://www.phpq.net/linux/linux-find.html、《Linux下find命令实例http://www.phpq.net/linux/linux-find-demo.html

    1)在/tmp中查找所有的*.h,并在这些文件中查找“SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名
    A) find    /tmp    -name    "*.h"    | xargs    -n50    grep SYSCALL_VECTOR
    B) grep    SYSCALL_VECTOR    /tmp/*.h | cut     -d':'    -f1| uniq > filename
    C) find    /tmp    -name "*.h"    -exec grep "SYSCALL_VECTOR"    {}    \; -print

    2)find / -name filename -exec rm -rf {} \;
         find / -name filename -ok rm -rf {} \;

    3)比如要查找磁盘中大于3M的文件:
    find . -size +3000k -exec ls -ld {} ;

    4)将find出来的东西拷到另一个地方
    find *.c -exec cp '{}' /tmp ';'
    如果有特殊文件,可以用cpio,也可以用这样的语法:
    find dir -name filename -print | cpio -pdv newdir

    6)查找2004-11-30 16:36:37时更改过的文件
    # A=`find ./ -name "*php"` |    ls -l --full-time $A 2>/dev/null | grep "2004-11-30 16:36:37
    二、linux下find命令的用法1. 基本用法:
          find / -name 文件名
         find ver1.d ver2.d -name '*.c' -print    查找ver1.d,ver2.d *.c文件并打印
         find . -type d -print 从当前目录查找,仅查找目录,找到后,打印路径名。可用于打印目录结构。
    2. 无错误查找:
          find / -name access_log 2 >/dev/null
    3. 按尺寸查找:
          find / -size 1500c (查找1,500字节大小的文件,c表示字节)
          find / -size +1500c (查找大于1,500字节大小的文件,+表示大于)    
          find / -size +1500c (查找小于1,500字节大小的文件,-表示小于)    
    4. 按时间:
          find / -amin n 最后n分钟 
          find / -atime n 最后n天
          find / -cmin n 最后n分钟改变状态
          find / -ctime n 最后n天改变状态
    5. 其它:
          find / -empty 空白文件、空白文件夹、没有子目录的文件夹
          find / -false 查找系统中总是错误的文件
          find / -fstype type 找存在于指定文件系统的文件,如type为ext2
          find / -gid n 组id为n的文件
          find / -group gname 组名为gname的文件
          find / -depth n 在某层指定目录中优先查找文件内容
          find / -maxdepth levels 在某个层次目录中按递减方式查找
    6. 逻辑
          -and 条件与 -or 条件或
    7. 查找字符串
          find . -name '*.html' -exec grep 'mailto:'{}

  • 相关阅读:
    “用户、组或角色'XXX'在当前数据库中已存在”问题
    C#与Java在继承静态类上的区别
    Java中静态内部类的理解
    python第三天
    python第二天
    python第一天
    applicationhost.config web.config
    IIS:错误: 无法提交配置更改,因为文件已在磁盘上更改
    SMO 的环境
    从客户端中检测到有潜在危险的 Request.Form 值
  • 原文地址:https://www.cnblogs.com/perfy/p/2606089.html
Copyright © 2020-2023  润新知