find查找

    好久没更新博客了,今晚来写一篇吧。

    正文之前,先来将一个小插曲。我在面试当前岗位的时候,遇到了一个面试题目:

            查找出最近三天创建的.log结尾的文件并删除。

    看到的时候,内心狂喜,这不很简单吗?我就三分钟写下答案然后就交卷了。结果很是意外,答案是错的!我清楚的记得我写的答案是这样的:

find / -mtime 3 -name *.log | xargs rm -f
   
   

并且在自己的虚拟机上跑了一下,操作也成功了!我就很好奇,到底是哪里出问题了呢?后来我仔仔细细查了一下,原因出在-name 后面的选项上,应该加上单引号,否则会报错。请看下面的例子:


   
   
  1. [root@d ~]# ls
  2. a324.sql Centos -7.repo elasticsearch -5.6 .8.zip .1 output.session
  3. a324.sql.tar.gz c.sh Git -2.26 .2 -64-bit.exe s.sh
  4. aa.sh elasticsearch -5 -6 -8 grafana -5.0 .4 -1.x86_64.rpm s.sh.tar.gz
  5. a.ss elasticsearch -5.6 .8 grafana -5.0 .4 -1.x86_64.rpm.nak time. log
  6. a.tar.gz elasticsearch -5.6 .8.rpm mbox wget- log
  7. a.txt elasticsearch -5.6 .8.zip nohup.out zz.sh
  8. [root@d ~]# find ./ -name *.rpm
  9. find: paths must precede expression: grafana -5.0 .4 -1.x86_64.rpm
  10. Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [ path...] [expression]
  11. [root@d ~]# find ./ -name '*.rpm'
  12. ./elasticsearch -5.6 .8.rpm
  13. ./grafana -5.0 .4 -1.x86_64.rpm

好了。开始步入正题(外面又下雨求了!好烦)

    find命令的工作方式如下:沿着文件层次结构向下遍历,匹配符合条件的文件,执行相应的操作。默认的操作是打印出相应的文件或者目录,这也可以使用-print选项来指定!

    1、列出/app下的文件或目录

find /app

2、-name  查找.txt结尾的文件

                 

find / -name '*.txt'
   
   

3、查找.txt结尾的文件,忽略.txt的大小写

find / -iname '*.txt'
   
   

4、-o 逻辑或操作符


   
   
  1. [root @d tests]# find . / -name '*.txt' -o -name '*.js'
  2. . /c.txt
  3. . /a.js

5、逻辑与 -a ,和-o差不多

6、正则-regex,匹配以.py或者.sh结尾的文件。-iregex忽略大小写。

find . -regex '.*\.\(py\|sh\)$'
   
   

7、!:否定参数 查找当前目录下非.txt结尾的文件

find ./ ! -name '*.txt'
   
   

8、基于目录深度搜索 -maxdepth N,-mindepth N。默认情况下,find 命令不会跟随符号链接,-L选项可以强制改变这种行为。

9、-type,后面可以跟-f -d -l -s -b 

10、-atime用户最近一次访问文件的时间  -ctime文件元数据最后一次改变的时间 -mtime文件内容最后一次被修改的时间。

find ./ -atime 7表示第七天被访问的文件

find ./ -atime +7表示七天前被访问的文件

find ./ -atime -7表示七天内被访问的文件

-amin  -cmin -mmin

11、-newer

12、-size基于大小搜索

find ./ -type f -size 7k 刚好7k

find ./ -type f -size +7k 大于7k

find ./ -type f -size -7k 小于7k

13、-perm基于权限

find . -type f -perm 644 查找权限为644的文件

14、-user zhaoyun找出zhaoyun拥有的所有文件

find . -user zhaoyun 

15、find相应的操作

-print:默认动作,打印

-delete:删除


   
   
  1. [root@d tests]# ls
  2. a .html a .js A .TXT c .txt
  3. [root@d tests]# find . -name * .txt -delete
  4. [root@d tests]# ls
  5. a .html a .js A .TXT

16、-exec执行命令

find命令hui

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值