linux 命令之find

find语法

find 起始目录(path)   表达式(选项、条件测试、动作)


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

path:指定find开始查找的目录,默认条件下,find会递归的查找指定目录下所有子目录和文件

-option : 选项

condition :条件测试

-print : 将查找到的文件输出到标准输出    (动作)

-exec command {} \;    将查找到的文件执行command操作,{}和\;之间有空格 (动作)

-ok 和 -exec 相同,只不过在操作前要询问用户


选项:

-d 、-depth : 先找目录下的内容,然后是目录本身

-maxdepth <n> : 从指定目录最多往下找n层

-mindepth <n> :从指定目录下至少往下找n层

-prune : 防止进入符合某种条件的目录

-xdev 、-mount : 不要进入其他文件系统查找


条件测试:

-name 或 -iname :按文件名查找,-iname只不区分大小写

find . -name ‘*sql’  #在当前目录查找以文件名sql结尾的文件
find /tmp  /opt  ./  -name '*sock'  #在/tmp 、/opt 、当前目录下查找以文件名sock结尾的文件


-user : 按照文件属主查找

-nouser : 查找无效属主文件

-group : 按照文件属组查找

-nogroup : 查找无效属组文件

-uid :查找属于uid号用户的文件

find /tmp -user 'gino'  #在/tmp目录下查找文件属主是gino的文件

linux服务器端有时会出现一些无主文件(用户及用户组被删除但是所属文件没有删除)
find . -nouser -nogroup  -delete  #在当前目录下查找无主文件,并删除


-type :按文件类型查找 

    文件类型:  b(块设备)   c(字符设备)  d(目录)  f(普通) l(链接) s(套接字) p(管道)

find /tmp -type s #查找/tmp目录下的socket文件


-atime n, -ctime n, -mtime n: 单位为天(a 访问时间,c 状态改变时间,m修改时间)(n为数字 <n为正好等于,-n为小于n,+n为大于n>)

-amin n,-cmin n,-mmin  n:单位为分钟(a访问时间, c状态改变时间, m修改时间)(n为数字<n为正好等于,-n为小于n,+n为大于n>)

-anewer file , -cnewer file , -newer file :时间比文件file新

find . -mmin -50 #在当前目录下查找50分钟内修改的文件
find . -ctime +2 #在当前目录下查找状态更改时间大于48小时的文件(2天)
find . -newer samp.sh #在当前目录下查找比samp.sh文件新的文件
find . -newer samp.sh !sbmp.sh #在当前目录下查找 比samp.sh文件新,但是比sbmp.sh文件旧的文件


-size :按文件的大小单位查找

    文件大小单位: 

          b :以512bytes为单位的块  (默认)

          c  : 字节

          w : 双字节字符数

          k   : 1024 bytes

          M  : 1024 * 1024 bytes

          G   : 1024 * 1024 * 1024 bytes

find . -size +10240k #查找文件尺寸大于10240k的文件
find . -size -2048 #查找文件尺寸2048 blocks(2048 * 512 bytes)
find . -size 0 #查找空文件   
find . -empty #查找空文件

-perm : 按照权限查找

      权限匹配规则(以220为例)

       220 : 文件权限必须为220

       -220 : 文件权限最小为220

       /200   :  符合 u,g,o 三个权限中的任意一个都匹配,(但不匹配220)

#以下三条命令一致,查找属主或属组 有写权限的文件
find . -perm /220
find . -perm /u+w,g+w
find . -perm /u=w,g=w

-readable : 可读

-writable : 可写

-executable : 可执行

find . -readable  #查找当前目录可读文件


动作:
-print : 打印查找到的结果

-ls : 相当于ls -l

-exec command {} \; 执行 command命令

-ok command {} \;同-exec ,但是开启交互模式

-delete : 删除找到的文件

find . -name '*sql' -exec cp {} /tmp \;   #查找当前目录下以sql结尾的文件,将其复制到/tmp目录下
find .  -nouser -nogroup -ok rm -rf {} \;   #查找当前目录无主文件,将其删除(交互模式)
find . -name '*sql' -ls  #查找当前目录下所有后缀为sql的文件,并执行ls -l

  




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值