shell 文件查找(六)_shell 搜索-程序员宅基地

技术标签: shell  

1、文件查找之find(一)

缺点效率比较低

语法格式: find [路径][选项][操作]

选项参数

  • -name                        根据文件名查找,区分大小写
    • find /etc -name '*.conf '       在/etc目录下查找以.conf结尾的文件或目录
    • find . -iname 'aA'                   在当前目录下查找文件aA,忽略大小写(即aa,aA,Aa,AA均符合)
  • -perm                         根据权限查找
    • find . -perm 664
  • -prune                       该选项可以排除某些查找目录
  • -user                          根据属主查找
    • find . -user hdfs                      查找属主为hdfs的所有文件或目录
  • -group                        根据属组查找
    • find . -group yarn                   查找属组为yarn的所有文件或目录
  • -mtime -n | +n           根据更改时间查找(天)
    • -n        n天以内修改的文件
    • +n        n天以外修改的文件
    • n          正好n天修改的文件
    • find /etc -mtime +10 -user root    查找/etc目录下10天之前修改且属主为root的文件
    • find /etc -mtime -5 -name '*.conf' 查找/etc目录下5天之内修改且以conf结尾的文件
  • -nouser                        查找无有效属主的文件或目录
    • find . -type f -nouser
  • -nogroup                      查找无有效属组的文件或目录
  • -newer file1                  查找更改时间比file1新的文件或目录
    • find /etc -newer /etc/rdma/rdma.conf       查找/etc目录下更改时间在/etc/rdma/rdma.conf  之后的文件或目录
  • -type                          按类型查找
    • f         文件                       find . -type f 
    • d        目录                       find . -type d
    • c        字符设备文件        find . -type c
    • b        块设备文件            find . -type b
    • l          链接文件               find . -type l
    • p         管道文件               find . -type p
  • -size -n +n                 按大小查找文件
    • -n        大小大于n的文件
    • +n        大小小于n的文件
    • find /etc -size +1M           查找/etc目录下大于1M的文件
    • find /etc -size -10000c   查找/etc目录下小于10000字节的文件
  • -mindepth n               从n级子目录开始搜索?
    • find /etc -mindepth 3      在/etc下的3级子目录开始搜索,例如:/etc/pki/tls/certs,一级子目录是/etc?
  • -maxdepth n              最多搜索到n级子目录?
    • find /etc -maxdepth 1 -name '*.conf'      在/etc下搜索符合条件的文件,但最多搜索到1级子目录,例如/etc/chrony.conf,1级子目录是/etc就是当前文件夹,最多搜到这种层次的目录,在其下找文件

-prune

通常和-path一起使用,用于将特定目录排除在搜索条件之外(-path ./opt -prune -o一起使用)
例子1:查找当前目录下所有普通文件,但排除test目录
find . -path ./test -prune -o -type f

例子2:查找当前目录下所有普通文件,但排除etc和opt目录
find . -path ./etc -prune -o -path ./opt -prune -o -type f(标红色的-o表示或)

例子3:查找当前目录下所有普通文件,但排除etc和opt目录,但属主为hdfs
find . -path ./etc -prune -o -path ./opt -prune -o -type f -a -user hdfs

2、文件查找之find(二)

操作

-print        打印输出

find ./ -name '*.conf' -print

-exec        对搜索到的文件执行特定的操作,格式为-exec 'command' {} \;

find ./test/ -type f -name '*.conf' -size +10k -exec rm -f {} \;         搜索/test下的文件(非目录),文件名以conf结尾,且大于10k,然后将其删除

find ./test -size +1M -exec cp {} ./test_5/ \;   将/test下大于1M的文件复制到test_5目录下

find ./test -name '*.log' -mtime +7 -exec rm -rf {} \;   将。/test目录下以log结尾的文件,且更改时间在7天以上的删除

-ok            和-exec功能一样,只是每次操作都会给用户提示

逻辑运算符:

  • -a            与
  • -o            或
  • -not|!        非

 find /etc -not -newer /etc/rdma/rdma.conf    查找/etc目录下更改时间在/etc/rdma/rdma.conf  之前的文件或目录

例子1:查找当前目录下,属主不是hdfs的所有文件        
            
                find . -not -user hdfs    

               find . ! -user hdfs

例子2:查找当前目录下的属主为hdfs或者以conf结尾的普通文件
            
                find . -type f -a -user hdfs -o -name '*.conf'

               观察find . -type f -a -user hdfs -o -name '*.conf' -exec ls -rlt {} \;
                
                find . -type f -a \( -user hdfs -o -name '*.conf' \) -exec ls -rlt {} \;

例子3:查找当前目录下,属主属于hdfs,且大小大于300字节的文件
            
                find . -type f -a -user hdfs -a -size +300c

3、find、locate、whereis和which总结及适用场景分析

locate命令介绍

  • 文件查找命令,所属软件包mlocate
  • 不同于find命令是在整块磁盘中搜索,locate在数据库文件中查找
  • find是默认完全匹配,locate则是默认部分匹配。例如按文件名查找log文件,find则只会找log文件,locate会找到所有的*log*

updatedb命令

  • 用户更新/var/lib/mlocate/mlocate.db
  • 所使用配置文件/etc/updatedb.conf,定义哪些目录下的文件更新到数据库。
  • 该命令在后台cron计划任务中定期执行

locate是部分匹配,只要部分匹配到,无论是文件还是目录都会找到


 

[root@test ~]# touch abc.txt

[root@test ~]# locate abc.txt

[root@test ~]# ll -ah /var/lib/mlocate/mlocate.db

-rw-r----- 1 root slocate 948K 7月  20 08:25 /var/lib/mlocate/mlocate.db

[root@test ~]# updatedb

[root@test ~]# ll -ah /var/lib/mlocate/mlocate.db

-rw-r----- 1 root slocate 948K 7月  20 08:39 /var/lib/mlocate/mlocate.db

[root@test ~]# locate abc.txt

/root/abc.txt

whereis命令

查找某个命令的二进制程序文件,帮助文档,源代码文件。

  • -b      只返回二进制文件 
  • -m     只返回帮助文档文件
  • -s      只返回源代码文件

[root@test ~]# whereis python

python: /usr/bin/python /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz

[root@test ~]# whereis -m python

python: /usr/share/man/man1/python.1.gz

[root@test ~]# whereis -b python

python: /usr/bin/python /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7

[root@test ~]# whereis -s python

which命令

仅查找二进制程序文件

  • -b 只返回二进制文件

python:[root@test ~]# which python

/usr/bin/python

各命令适用场景推荐

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_xuanshuang/article/details/107453783

智能推荐

java毕业设计基于微信小程序的迎新管理系统[附源码]-程序员宅基地

文章浏览阅读379次,点赞5次,收藏3次。同时,高校作为人才培养的重要场所,每年迎来大量新生,如何高效地进行迎新管理,确保新生能够快速融入校园生活,是高校管理工作中的一项重要内容。而基于微信小程序的迎新管理系统可以实现线上报到、信息查询、宿舍分配、日程安排等功能,大大简化了新生的入学流程,提高了迎新工作的效率。设计并实现一个基于微信小程序的迎新管理系统,不仅能够利用现代信息技术优化高校的迎新流程,提高管理效率,还能够为新生提供便捷的服务,帮助他们更好地适应大学生活,这对于提升高校的服务质量和管理水平,以及增强新生的满意度和归属感都具有重要的意义。

Exchange 2013 CU6发布-程序员宅基地

文章浏览阅读74次。昨天微软发布了Exchange 2013的CU6,修复了一些之前的bug,快来看看你的bug被没被修复吧~问题描述页面邮箱被迁移到Exchange 2013后可能会在邮箱数据库中存在多个Exchange文件夹http://support.microsoft.com/kb/2991934在使用混合配置向导来创建包含Exchange 2013的环境时收到子任务 Check..._exchange server 2013 cu6

python编程好学吗-少儿编程python学啥?好不好学、有用吗-程序员宅基地

文章浏览阅读163次。少儿编程python学啥?好不好学、有用吗来源:搜学搜课 时间:2020/9/17 15:14:21Scratch、Python、C+学习的不同之处就目前国内少儿编程教育体制来说 ,合适中国青少儿学习的是Scratch、Python、C++(以NOIP编程竞赛为导向)。ScratchScratch是一款专为低龄孩子设计的少儿编程工具,入门门槛很低。既不需要懂英文,也不需要敲代码,只需按照一..._少儿编程python要学多久

MySQL数据库调优————GROUP BY及DISTINCT优化_优化group by查询很慢的问题建议使用distinct字段做分组的查询优-程序员宅基地

文章浏览阅读952次。然后将person[i]的进行计算得到最小的salary,再计算person[i+1]的最小salary,但是索引是有序的,查询出来的语句已经是先按person排序,再按salary排序,也就是说每个person的第一个salary就是最小的,中间的扫描所有每个person的salary并计算最小值的过程是可以省略的直接取每个person的第一个salary即可,这就是松散索引扫描,无需扫描所有的满足条件的索引。一旦使用了临时表,在Extra中将会出现Using temporary。_优化group by查询很慢的问题建议使用distinct字段做分组的查询优

手机 机器人 谢超_德国工业机器人离线仿真软件EASY ROB 公司总裁一行到我校机械工程学院交流洽谈合作...-程序员宅基地

文章浏览阅读253次。10月22日,德国工业机器人离线仿真软件EASY ROB 公司总裁Stefan Anton先生,德国China Window 国际智库首席研究员高鹏博士、中国市场营销总监艾万朋先生一行3人到我校机械工程学院进行访问交流并签订合作协议。校党委书记张金刚与客人进行了会谈,介绍了学校概况、人才培养定位和目标等。张金刚表示,希望双方以此次交流合作为契机,发挥China Window公司的智库作用,建立学校..._easyrob

echarts 折线图 设置y轴最小刻度_见识matplotlib:不常见的一面,折线图-程序员宅基地

文章浏览阅读308次。江湖上所公认的一句话,字不如表,表不如图!人们往往都更喜欢看图说话,那么用python的各位大侠们,大家都在用什么画图呢?各种各样的画图包犹如各式各样的兵器,有的兵器功能单一但是在细分领域超级专业无敌,有的兵器功能多而全,用法灵活。​ 众所周知,matplotlib是python绘图的基础包,能够生成各种各样2D或者3D的图形,用法算是多而全的那种,下边是matplotlib官网首页作为例子的几张..._echarts 折线图y轴 最小刻度

随便推点

基于神经网络的毕设题目_神经网络与遗传算法【精品毕业设计】(完整版)-程序员宅基地

文章浏览阅读728次。5.4神经网络与遗传算法简介在本节中,我们将着重讲述一些在网络设计、优化、性能分析、通信路由优化、选择、神经网络控制优化中有重要应用的常用的算法,包括神经网络算法、遗传算法、模拟退火算法等方法。用这些算法可以较容易地解决一些很复杂的,常规算法很难解决的问题。这些算法都有着很深的理论背景,本节不准备详细地讨论这些算法的理论,只对算法的原理和方法作简要的讨论。5.4.1神经网络1.神经网络的简单原理人..._神经网络算法毕设

基于深度学习的医学图像半监督分割-程序员宅基地

文章浏览阅读2.5k次。点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达本文转自:计算机视觉life准确、鲁棒地从医学图像中分割出器官或病变在许多临床应用中起着至关重要的..._tcsm_v2

iOS tableView cell高度自动布局 (masonry)_ios 布局完刷新cell的高度-程序员宅基地

文章浏览阅读3.7k次。1.cell自动布局应用场景对于一个cell有多种状态,涉及到显示或者隐藏某些view,并且cell高度随时改变,如果用viewmodel来计算的话,很复杂增加了很多代码量,而且如果状态考虑的不全极有可能造成错误,如果用自动布局的话,则没有这么多的顾及。2.tableView设置tableview的懒加载中设置这两个属性 _tableView.estimatedRowHeight =..._ios 布局完刷新cell的高度

基于Java+Vue+uniapp微信小程序云匹面粉直供系统设计和实现-程序员宅基地

文章浏览阅读3.2k次,点赞23次,收藏27次。随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了云匹面粉直供微信小程序的开发全过程。通过分析云匹面粉直供微信小程序管理的不足,创建了一个计算机管理云匹面粉直供微信小程序的方案。文章介绍了云匹面粉直供微信小程序的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数据库设计。用户可以注册登录,订购免费等操作。因而具有一定的实用性。

湖南涉外经济学院计算机应用技术,第二届湖南涉外经济学院计算机应用能力竞赛暨第七届全国大学生计算机应用能力与信息素养大赛院校赛成功举办...-程序员宅基地

文章浏览阅读217次。4月22日上午,由学校教务处主办,信息科学与工程学院承办的第二届湖南涉外经济学院计算机应用能力竞赛暨第七届全国大学生计算机应用能力与信息素养大赛院校赛在6教504与505室成功举办。学校9个学院的441位报名参赛同学经过为期五天(4月6日至10日)如火如荼的初赛,从中选拔了100名优秀学生参加了本次比赛。第二届湖南涉外经济学院计算机应用能力竞赛分为Office商务应用能力和多媒体作品设计两个大赛项..._2024第七届大学生计算机技能应用大赛

fpga如何约束走线_FPGA时序约束实战篇之多周期路径约束-程序员宅基地

文章浏览阅读269次。原标题:FPGA时序约束实战篇之多周期路径约束多周期路径约束多周期路径,我们一般按照以下4个步骤来约束:带有使能的数据首先来看带有使能的数据,在本工程中的Tming Report中,也提示了同一个时钟域之间的几个路径建立时间不满足要求 其实这几个路径都是带有使能的路径,使能的周期为2倍的时钟周期,本来就应该在2个时钟周期内去判断时序收敛。因此,我们添加时序约束:set_multicycle_pat..._ise 伪路径