史上最全!find查找并列出文件

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

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

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

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

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

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

[root@d ~]# ls
a324.sql         Centos-7.repo            elasticsearch-5.6.8.zip.1       output.session
a324.sql.tar.gz  c.sh                     Git-2.26.2-64-bit.exe           s.sh
aa.sh            elasticsearch-5-6-8      grafana-5.0.4-1.x86_64.rpm      s.sh.tar.gz
a.ss             elasticsearch-5.6.8      grafana-5.0.4-1.x86_64.rpm.nak  time.log
a.tar.gz         elasticsearch-5.6.8.rpm  mbox                            wget-log
a.txt            elasticsearch-5.6.8.zip  nohup.out                       zz.sh
[root@d ~]# find ./ -name *.rpm
find: paths must precede expression: grafana-5.0.4-1.x86_64.rpm
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
[root@d ~]# find ./ -name '*.rpm'
./elasticsearch-5.6.8.rpm
./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 逻辑或操作符

[root@d tests]# find ./ -name '*.txt' -o  -name '*.js' 
./c.txt
./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:删除

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

16、-exec执行命令

find命令hui

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值