find命令详解

简介:

find

  精确查找

  查找精度高,但是速度略慢

  在指定位置进行文件名或者文件属性的遍历扫描,强烈建议不要对根目录进行find操作

  实时查找

  使用find命令只能搜索当前用户具有读取和执行权限的目录

 

  find命令的用法:

    从目录的层级结构中搜索文件

    find [options...][查找路径][查找条件][处理动作]

      查找路径:如果省略不写默认为当前工作目录,可以指定具体的目录路径

      查找条件:进行本次搜索的标准,可以是文件名,文件的大小,文件的类型,文件的权限等,没有给定具体的条件则默认是指定目录中的所有文件

      处理动作:对于符合条件的文件进行某个处理动作,默认将查找结果输出到显示器。

 

 

    根据文件名进行查找:

      -name 文件名称,支持使用通配符globbing,(*,?,[],[^])


如:查找以root命名的文件:


[root@ZJ01 ~]# find -name root

./.local/share/gvfs-metadata/root


      -iname 文件名称,忽略字母大小写,支持并使用globbing(*,?,[],[^])

    根据文件的inode编号查找:

      -inum inode编号:通过给定的inode编号查找对应的文件名路径

      -samefile name:通过给定的文件名查找对应的文件名编号,进而确定所有具有该inode编号的文件名及路径

      -links n:查找链接数为n的所有文件

    根据正则表达式查找:

      -regex pattern:以pattern匹配整个文件路径的字符串,而不仅仅是给定文件的名称

    根据文件的属主属组进行查找:

      -user uname:根据属主为指定用户的用户名进行查找


如:查找/var目录下属主为root且属组为mail的所有文件


[root@ZJ01 ~]# find /var -user root -a -group mail

/var/spool/mail

/var/spool/mail/root


      -uid UID:根据属主为某个UID进行查找

      -group gname

      -gid GID

      -nogroup:在文件的属组上没有组所对应的组名

      -nouser:在文件的属主上没有用户对应的用户名

    根据文件的类型:

      -type 文件类型

        b 块设备

        c 字符设备

        d 目录文件

        f 普通文件

        l 符号链接文件

        p 管道文件

        s 套接字文件


如:查找/etc目录下大于2MB的普通文件


[root@ZJ01 ~]# find /etc -size +2M -a -type f

/etc/selinux/targeted/policy/policy.29

/etc/udev/hwdb.bin


      -xtype 文件类型:符号链接文件的匹配需要配合其他的选项

    根据时间戳进行查找:

      以天为单位

        -atime [+|-]n:根据访问时间查找

        -ctime [+|-]n:根据改变时间查找

        -mtime [+|-]n:根据修改时间查找

          n:[n,n+1)

          +n:[n+1,+∞):n天以上

          -n:[now,n):n天以内

      以分钟为单位

        -amin [+|-]n:

        -cmin [+|-]n:

        -mmin [+|-]n:


如:查找/etc目录下最近一天内内容修改过的文件

[root@ZJ01 ~]# find /etc -mtime -1

/etc

/etc/sysconfig

/etc/sysconfig/network-scripts

/etc/cups

/etc/cups/subscriptions.conf.O

/etc/cups/subscriptions.conf

/etc/tuned/active_profile


    根据文件的大小:

      -size [+|-]n[cwbkMG]

        n:(n-i,n]

        -n:[0,n-1]

        +n:[n,+∞)


如:查找/etc目录下大于2MB的普通文件


[root@ZJ01 ~]# find /etc -size +2M -a -type f

/etc/selinux/targeted/policy/policy.29

/etc/udev/hwdb.bin


    组合条件:

      -a 逻辑与

      -o 逻辑或

      -not,! 逻辑非

      逻辑组合条件遵循德摩根定律

        非( A 与 B )== 非A 或 非B

        非( A 或 B )== 非A 或 非B

    根据权限查找:

      -perm mode:精确匹配指定的权限

      -perm -mode:隐含了逻辑与的关系,意味着每一个权限位的权限中都必须同时包含指定的权限位才能满足条件

      -perm /mode:默认隐含了逻辑或的关系,任何一个权限位的权限中,只要能有一个权限位匹配即可

 

      所有都有 取反 任意一个没有

        !(a与b与c)= !a 或!b 或!c

      所有都没有 取反 任意一个有

        !(!a 与!b与!c)= a 或 b 或 c

 

  处理动作:

    -print:输出到显示屏幕,默认的动作

    -ls:对于查找到的结果执行ls -l命令显示

    -exec COMMAND {} \;:

    -ok COMMAND {} \;:

      对于查找到的结果执行COMMAND命令

        区别:-exac是非交互式的。 -ok是交互式的。

        {} :占位符,用来引用被find命令查找到的所有的文件的路径信息

    -exec和-ok的取代执行操作:

            chmod a-r $(find -perm -444 -type f)

             find -perm -444 -type f | xargs chmod a-r


如:查找当前系统上没有属主或属组,并将其属主属组均修改为root;


find / -nouser -o -nogroup  -exec chown root:root {} \;

 

  注意:管道输送的是纯字符串信息,所以如果管道之后的命令不是处理字符串的命令,需要使用xargs命令将其转换成能够被后面命令处理的参数




本文转自 Runs_ 51CTO博客,原文链接:http://blog.51cto.com/12667170/1930755,如需转载请自行联系原作者

相关文章
|
Java 关系型数据库 MySQL
解决SpringBoot配置文件项目重启出现乱码的情况
解决SpringBoot配置文件项目重启出现乱码的情况
279 0
|
运维 Kubernetes 数据可视化
【Docker管理工具】使用Docker部署portainer-ce管理工具
【7月更文挑战第22天】使用Docker部署portainer-ce管理工具
1295 3
【Docker管理工具】使用Docker部署portainer-ce管理工具
|
Ubuntu 计算机视觉 Python
已解决 ImportError:/opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so:undefined symbol:PyCobject Type。
已解决 ImportError:/opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so:undefined symbol:PyCobject Type。
529 0
已解决 ImportError:/opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so:undefined symbol:PyCobject Type。
|
数据可视化 物联网 PyTorch
通义千问7B模型开源,魔搭最佳实践来了
通义千问开源!阿里云开源通义千问70亿参数模型,包括通用模型Qwen-7B-Base和对话模型Qwen-7B-Chat,两款模型均已上线ModelScope魔搭社区,开源、免费、可商用,欢迎大家来体验。
|
运维 安全 存储
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项规程
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项规程
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项规程
|
数据采集 搜索推荐 数据安全/隐私保护
使用httpx异步获取高校招生信息:一步到位的代理配置教程
2024年中国高考临近,考生需及时获取高校招生信息。使用Python httpx库的异步功能可提高爬虫效率,尤其在处理大量请求时。结合爬虫代理IP,能避免IP封禁,确保数据抓取的连续性。文章介绍了招生趋势、特点,如多样化政策、多平台信息发布、个性化招生等,并提供了使用httpx异步请求和代理的代码示例,帮助开发者高效抓取高校专业与课程设置。
342 0
使用httpx异步获取高校招生信息:一步到位的代理配置教程
|
敏捷开发 测试技术 持续交付
深入探究软件自动化测试中的挑战与对策
【4月更文挑战第2天】 在软件开发的生命周期中,测试环节是保障产品质量的重要步骤。随着敏捷开发和持续集成的流行,自动化测试成为提升测试效率和质量的关键手段。然而,实施自动化测试并非没有挑战。本文将探讨自动化测试过程中常见的问题,包括测试用例设计、维护成本、框架选择、以及跨平台兼容性等,并针对每一挑战提出相应的解决策略。通过实际案例分析,本文旨在为软件测试工程师提供实用的自动化测试优化指南。
176 1
|
存储 应用服务中间件 nginx
Elasticsearch-Alias别名的2个核心场景
了解Elasticsearch的Alias别名之后,可以在业务上很方便的实现复杂需求,快速解决问题,本文从3个方面介绍:官方定义、使用场景、使用方法。
在pyodps中,`groupby`方法用于对数据进行分组
在pyodps中,`groupby`方法用于对数据进行分组
256 1
|
负载均衡 应用服务中间件 数据库
公有云降本增效最佳实践
公有云降本增效最佳实践