码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Linux命令_find


    Linux命令_find

    • 查找条件
      • 根据名称查找
        • -name pattern 根据名称查找,可使用正则表达式,区分大小写
        • -iname pattern 根据名称查找,只支持glob风格的查找方式:*、?、 [] 、 [^],不区分大小写
        • -regex pattern 根据名称查找,支持正则表达式
      • 根据大小查找
        • -size [+|-]SIZE 根据文件大小进行查找,单位:K(KB),M(MB),G(GB)
      • 根据权限查找
        • -perm MODE : 根据权限查找,精确匹配
        • -perm /MODE : 任何一类用户(u,g,o)中的任何一位(r,w,x)符合条件即满足,理解为或关系
        • -perm -MODE : 每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足,理解为与关系
      • 根据时间查找
        • -atime [+|-]TIME : 以访问时间(天)查找
        • -mtime [+|-]TIME : 以数据修改时间(天)查找
        • -ctime [+|-]TIME : 以元数据修改时间(天)查找
        • -amin [+|-]TIME : 以访问时间(分钟)查找
        • -mmin [+|-]TIME : 以数据修改时间(分钟)查找
        • -cmin [+|-]TIME : 以元数据修改时间(分钟)查找
        • -newer FILE : 以FILE文件为条件,判断比它新的文件
      • 根据类型查找
        • -type TYPE,根据类型进行查找,可选值如下:
      • 查找条件的组合
        • 与 : -a,and
        • 或 : -o,or
        • 非 : -not 或者 ! 表示
    • 处理动作
      • -exec COMMAND {} \; 查找到的文件传递给COMMAND命令,并执行相应操作,不经过用户确认
      • -ok COMMAND {} \; 查找到的文件传递给COMMAND命令,每一步都需用户确认操作
      • -delete 删除查找到的文件
      • -fls /PATH/TO/SOMEFILE 把查询到的文件以ls详细信息格式保存到SOMEFILE文件中
      • -print 默认为打印,不需要添加,输出入屏幕
      • -ls 以ls长文件的格式形式输出
    • 用法举例
      • 批量删除名称中包含字符串 '2022' 的文件夹
      • 找出/tmp目录下属主为非root,且文件名包含fstab字符串的文件
      • 找出/tmp目录下文件名中不包含fstab字符串的文件
      • 找出/tmp目录下属主为非root,而且文件名不包含fstab字符串的文件

    Linux之Find命令详解
    Linux中find命令用法全汇总,看完就没有不会用的!
    find命令
    【日常小记】linux中强大且常用命令:find、grep
    每天一个linux命令(22):find 命令的参数详解
    在Linux系统中, 为找到文件try_grep含有以a字母

    查找条件

    根据名称查找

    -name pattern 根据名称查找,可使用正则表达式,区分大小写

    find ~ -name '*jpg'		# 查找"~"目录下所有匹配"*jpg"的文件及目录,区分大小写
    
    • 1

    -iname pattern 根据名称查找,只支持glob风格的查找方式:*、?、 [] 、 [^],不区分大小写

    find ~ -iname '*jpg'		# 查找"~"目录下所有匹配"*jpg"的文件及目录,不区分大小写
    
    • 1
    • -name filename:查找文件名为 filename 的文件
    find / -name passwd			# 查找 / 目录下名称为 passwd 的文件
    find / -name "*passwd*" 	# 查找 / 目录下名称含 passwd 字符串的文件,* 做通配符
    
    find / -perm /7000			# 查找 / 目录下文件权限包含 7000 中任一权限的文件
    
    find /run -type s			# 查找 /run 目录下类型为 s 的文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    -regex pattern 根据名称查找,支持正则表达式

    根据大小查找

    -size [+|-]SIZE 根据文件大小进行查找,单位:K(KB),M(MB),G(GB)

    • -size 5M:精确查找大小为5M的文件
    • -size -5M:查询大小小于5M的文件
    • -size +5M:查询大小大于5M的文件

    根据权限查找

    -perm MODE : 根据权限查找,精确匹配

    • find . -perm 644

    -perm /MODE : 任何一类用户(u,g,o)中的任何一位(r,w,x)符合条件即满足,理解为或关系

    find . -perm /222 : 查找至少有一个类用户有写权限
    find . -perm /666 : 查找至少有一个类用户有读写权限
    find . -perm /001 :查找其他用户有执行权限

    -perm -MODE : 每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足,理解为与关系

    find . -perm -222 : 查找三类用户都有写权限
    find . -not -perm -222 :至少有一类用户没有写权限

    • -perm MODE:查找文件权限为 MODE 的文件
    • -perm -MODE:查询文件权限包含 MODE 中所有权限的文件
    • -perm /MODE:查找文件权限包含 mode 中任一权限的文件

    根据时间查找

    -atime [+|-]TIME : 以访问时间(天)查找

    -mtime [+|-]TIME : 以数据修改时间(天)查找

    find / -mtime 0
    
    # 查找"~"目录下修改时间在最近7天以内、匹配"*jpeg"或"*jpg"的文件和目录,不区分大小写
    find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f -mtime -7	
    
    • 1
    • 2
    • 3
    • 4

    -ctime [+|-]TIME : 以元数据修改时间(天)查找

    -amin [+|-]TIME : 以访问时间(分钟)查找

    -mmin [+|-]TIME : 以数据修改时间(分钟)查找

    -cmin [+|-]TIME : 以元数据修改时间(分钟)查找

    -newer FILE : 以FILE文件为条件,判断比它新的文件

    • 7 : 准确时间,7表示刚好7(天|分钟)起始位置
    • +7: 7(天|分钟)以前的
    • -7: 7(天|分钟)以内的

    根据类型查找

    -type TYPE,根据类型进行查找,可选值如下:

    • b:块设备文件
    • c:字符设备文件
    • d:目录
    • f:普通文件
    • l:符号链接文件
    • p:管道文件
    # 查找"~"目录下所有匹配"*jpeg"或"*jpg"的文件,不区分大小写,其中括号需转义
    find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f 	
    
    # 查找"~"目录下所有匹配"*jpeg"或"*jpg"的目录,不区分大小写,其中括号需转义
    find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type d 		
    
    • 1
    • 2
    • 3
    • 4
    • 5

    查找条件的组合

    与 : -a,and

    默认组合逻辑,可以加-a,也可以取消,例:find . -type f -a -user mariadb,两个条件同时满足

    或 : -o,or

    # 查找"~"目录下所有匹配"jpeg"或"jpg"的文件及目录,不区分大小写,其中括号需使用"\"转义
    find ~ \( -iname 'jpeg' -o -iname 'jpg' \)		
    
    • 1
    • 2

    非 : -not 或者 ! 表示

    find . -not -type f,不是普通文件
    find . ! -type f ,同上

    处理动作

    -exec COMMAND {} ; 查找到的文件传递给COMMAND命令,并执行相应操作,不经过用户确认

    注意:find将查找到的文件路径一次性传递给后面的命令,但有很多的命令不能接受过长的参数,导致命令的执行失败,使用如下方式可避免此错误的发生:
    find /etc -type f | xargs -i COMMAND : -i 参数是由 find 的结果传给 xargs 命令后,由 -i 指定结果代替符

    find /etc -type f | xargs -i cp {} /tmp		# -i 指定代替符为{}
    
    • 1
    # 查找 /usr/bin, /usr/sbin/ 目录中、文件权限含 7000 中任一权限的文件,并使用 ls -l 命令罗列出来
    find /usr/bin/ /usr/sbin/ -perm -7000 -exec ls -l {} \;
    
    find -type f -name 'test.c' -exec rm -rf {} \;	# 查找当前目录下名称为 test.c 的文件并删除
    find -type f -name "*.txt" -exec rm -rf {} \;	# 查找当前目录下后缀为 txt 的文件并删除
    
    • 1
    • 2
    • 3
    • 4
    • 5
    find /					# 查询 / 目录下的所有文件
    
    # 查找"~"目录下修改时间为最近7天内、匹配"*jpeg"或"*jpg"的文件,并将其复制到 ~/Pictures 目录
    sudo find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f -mtime -7 -print0 | xargs -0 cp -t ~/Pictures/
    
    • 1
    • 2
    • 3
    • 4

    -ok COMMAND {} ; 查找到的文件传递给COMMAND命令,每一步都需用户确认操作

    -delete 删除查找到的文件

    -fls /PATH/TO/SOMEFILE 把查询到的文件以ls详细信息格式保存到SOMEFILE文件中

    -print 默认为打印,不需要添加,输出入屏幕

    -ls 以ls长文件的格式形式输出

    用法举例

    批量删除名称中包含字符串 ‘2022’ 的文件夹

    linux shell:find命令批量删除文件夹或文件夹

    find . -type d -name '*2022*' -exec rm -rf {} \;
    
    • 1

    找出/tmp目录下属主为非root,且文件名包含fstab字符串的文件

    find /tmp -not -user root -a -name *fstab*
    
    • 1

    找出/tmp目录下文件名中不包含fstab字符串的文件

    find /tmp -not -name *fstab*
    
    • 1

    找出/tmp目录下属主为非root,而且文件名不包含fstab字符串的文件

    find /tmp -not -user root -a -not -name *fstab*
    find /tmp -not \(-user root -o -name *fstab*\)
    
    • 1
    • 2
  • 相关阅读:
    uniapp uni.getLocation:fail 频繁调用会增加电量损耗
    走进国产机器人领军品牌华数机器人,共探数字化变革魔力
    功率放大器驱动压电陶瓷有哪些应用
    做一个最新版的淘宝客返利程序源码有多难?
    IDEA启动报错Failed to create JVM. JVM path的解决办法
    使用spring cloud搭建微服务框架
    基于深度学习的人脸表情识别的AR川剧变脸(二)
    SpringCloud详解
    「Python实用秘技07」在pandas中实现自然顺序排序
    FullCalendarDemo5 控件的实例讲解—拖拽实现值班排班(三)
  • 原文地址:https://blog.csdn.net/CSDN_FlyYoung/article/details/126306539
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号