find命令常见使用介绍

1. 始

  昨晚(双12的夜晚),使用Postman调试客户给我的接口,准备将成功后的图片截屏保存下来发过去确认。结果Auto Save之后,不知道图片被存到了哪个目录。老师的操作系统是CentOS,按常理可以去Pictures或主文件(再或是家文件目录)中找,经过查找,还是木有滴。
  得到的片断信息只有,当时那个文件被放到了名为images的目录,那个图片文件的后缀是.png

强调:本文是一篇带有作者个性的严肃的技术贴,希望能适合您的阅读口味

2. 放弃搜索重新截屏OR继续找?

  手工查找Linux的目录,找一个文件,如果没有头绪,可能会让人消耗更多的时间。我完全有理由,用截屏软件重新截一次。但最终我还是想要继续找。
  我自己的习惯是,遇到问题需要用方法来解决,这种方法应该是一种促进学习应用的方法,而不是取巧、省事的绕开问题主体。之前浏览Linux相关书籍时,记得有个find、locate命令好像是可以完成搜索工作的。
  所以呢,一个问题点燃了老师学习的激情,午夜零点百度(&@^$)@#&,骂骂咧咧加些许称赞,最终找到了比较满意的Blog)一波,走起

3. 学习过程

  学习的过程,没法写,反正就是一堆尝试,意会呗。。再说了,我把自己学习进化的方式公开,岂不是有很多小朋友会把我超越(-_-,普劳图斯言——人人都是自私的。。。求认同)

4. 学习成果分享

  本节开始,以find为例,分享一下我对find查询命令的理解

4.1 研究对象

  如下图,是一个名为cookie的目录,可以看到它下一级有子目录node_modules及文件若干,而对于子一级目录以包括了一些目录(文件)。
  注意一下,最后一行给了一个概括信息,表示cookie目录所有的子孙节点中,有3个目录,13个文件。
在这里插入图片描述

4.2 找到当前目录的所有子级目录(文件)信息

命令写法:find ./

在这里插入图片描述

  可以用上图与4.1节的树形目录结构比较,发现(除了./之外)输出了16行,其中有三个为目录、13个为文件。也就是说find ./命令的结果可以将 当 前 所 在 目 录 的 所 有 下 属 节 点 \color{red}{当前所在目录的所有下属节点} 信息完全查找出来。

4.3 按文件名查找

命令写法:find ./ -name index.js

在这里插入图片描述
  上图倒数第四行的命令,输出了查找到的结果,分别在子孙目录cookie、escape-html下有文件名同为index.js的文件。
  注意:该命令查找时,默认查找的数据类型是文件,而非目录。如果需要指定为目录可以用

find ./ -type d -name cookie

  这样可以找到当前目录下所有以cookie命名的子孙节点目录(这个各位可以自行试验)

4.4 使用通配符查找文件

命令写法:find ./ -name “*.js”
在这里插入图片描述

  可以看到上图中,通过*.js匹配到了当前目录中,各子孙节点中以.js结尾的文件
  注:查询目录的方式也类同,你只要加上-type d参数即可;另外,感兴趣的朋友可以试试正则表达式查找,find也是支持的,我没有研究,但要比通配符会更强大

4.5 指定查找深度

命令写法:find ./ -maxdepth n -name “*.js”
注:-maxdepth是指从当前目录开始查找的目录深度。
在这里插入图片描述

注:上图-maxdepth 为1和2时发现结果输出相同,是因为在node_modules(即2级深度时)没有js文件

4.6 查看文档改变时间和内容修改时间

命令写法:find ./ -ctime 0
find ./ -mtime 0

  有时候我们需要知道,在最近的一段时间内哪些文件(目录)被访问过,哪些文件(目录)被修改过。这时会使用到ctime(最近一次文件状态改变的时间,如文件所有者、权限等)和mtime(表示最近一次内容被修改的时间)
在这里插入图片描述
  无论是-ctime n还是-mtime n都值得注意一下:n是一个时间敬意,表示从现在开始算起n天之前的某一天(的24小时内)有更新的。
  上图中的find ./ -ctime 0 就表示找出今天一天之内,文件状态发生过改变的文件;同理,我们找前天(此时n为2,要记住第一天是0,依次类推)一天之内文件状态发生改变的文件时,可以用 find ./ -ctime 2。
  还有一种用法 find ./ -ctime -3,表示要查询从今天算起,往前推算,3天(今天、昨天、前天)内,文件状态发生改变的文件(-3就表示小于等于2天的意思)。
  还还有一种用法find ./ -ctime +3,表示从今天算起,往前推算3天(今天、昨天、前天)之外的时间,即查询文件状态发生改变的时间早于3天的文件(+3就是大于等于4天的意思)。

注:上图中ls -lR表示将当前目录详细信息递归列表输出

4.7 指目录的查询深度(2)

命令写法:find ./node_modules/ -maxdepth n

  注意,本节内容与4.5节一样,但“深度”这个词n,是相对于find后面的目录路径而言的。如,下图的find后面是./node_modules/,此时1级深度就是./node_modules/下直接包括的内容。
在这里插入图片描述
  如上图所示,当-maxdepth后边的值为1时,它只输出了node_modules目录下一级的目录(文件)信息;当-maxdepth后边的值为2时,它输出了除它直接包含的两个目录之外,也将这两个目录中的内容(这些内容相对于node_modules目录的视觉深度为2级)一并输出。

4.8 指定查询内容类型

命令写法:find ./ -type f 查找文件
     find ./ -type d 查找目录

  有了type参数之后,在查询结果输出之前,会进行过滤(如果你指定了-type -f),那么输出的结果中只会显示文件(没有目录)
在这里插入图片描述
  说到这里本文就讲完了,find命令其实有丰富的参数,感兴趣的同学可以自行查询资料继续深挖。有了以上的几点,我很容易找到了我的images的位置,并将截屏的图片找了回来。~~任务完成,谨以此文记录我解决问题的过程,欢迎读者们多多讨论指正。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值