• Linux find命令查找删除文件(文件夹)


    搜索当前目录下30天以前的文件夹:

    find . -mtime +30 -type d
    

    搜索当前目录下30天以前的文件夹,排除abc目录:

    find . -mtime +30 -type d ! -name "abc/"
    

     -mtime +30   30天以前

    -type d   文件夹

    ! -name "abc/"  排除"abc"目录

    搜索当前目录下30天以前的文件log文件

    find . -mtime +30 -type f -name "*.log"
    

    搜索当前目录下30天以前的文件

    find . -mtime +30 -type f
    

    -name "*.log"

    -type f  文件

     

    删除当前目录下,30天以前的文件

    方法一:

    find . -mtime +30 -type f -exec rm -rf {} ;
    

     -exec rm -rf --查找完毕后执行删除操作;
     {} \; --固定写法

    参考:https://blog.51cto.com/lxw1844912514/3056603?abTest=51cto

     方法二:

    find . -mtime +30 -type f | xargs rm -rf;
    

     xargs rm -rf;  开启新线程执行rm -rf 删除符合条件的文件

    参考:https://www.cnblogs.com/Chaos1973-newWorld/p/15261491.html

    -

    find命令排除某些目录或文件

    # 在当前目录下排除abc目录,查找所有文件
    find . -path "./abc" -prune -o -print
     
    # 在当前目录下排除abc目录,查找所有以.txt结尾的文件【方式一】
    find . -path "./abc" -prune -o -name "*.txt" -print
     
    # 在当前目录下排除abc目录,查找所有以.txt结尾的文件【方式二】
    find . -name "*.txt" -not -path "./abc/*"
     
    # 在当前目录下排除abc和def目录,查找所有以.txt结尾的文件
    find . \( -path ./abc -o -path ./def \) -prune -o -name "*.txt" -print
     
    # 在当前目录下排除abc目录和def/h.txt文件,查找所有以.txt结尾的文件
    find . \( -path ./abc -o -path ./def/h.txt \) -prune -o -name "*.txt" -print
     
    # 在当前目录下排除abc目录和def/h.txt文件和jk目录,查找所有以.txt结尾的文件
    find . \( -path ./abc -o -path ./def/h.txt -o -path ./jk \) -prune -o -name "*.txt" -print
     
    # 在当前目录下查找所有不是以.html结尾的文件
    find . ! -name "*.html" -type f

    来源:https://blog.csdn.net/chenzhengfeng/article/details/122753903


    find
    在指定目录下查找文件


    补充说明
    find命令 用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果
    使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目
    录和文件全部进行显示。


    语法
    1. find(选项)(参数)


    选项
    1. -amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
    2. -anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
    3. -atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
    4. -cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
    5. -cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
    6. -ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
    7. -daystart:从本日开始计算时间;
    8. -depth:从指定目录下最深层的子目录开始查找;
    9. -expty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
    10. -exec<执行指令>:假设find指令的回传值为True,就执行该指令;
    11. -false:将find指令的回传值皆设为False;
    12. -fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;
    13. -follow:排除符号连接;
    14. -fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;
    15. -fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;
    16. -fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的 列表文件;
    17. -fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;
    18. -gid<群组识别码>:查找符合指定之群组识别码的文件或目录;
    19. -group<群组名称>:查找符合指定之群组名称的文件或目录;
    20. -help或--help:在线帮助;
    21. -ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;
    22. -iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;
    23. -inum<inode编号>:查找符合指定的inode编号的文件或目录;
    24. -ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;
    25. -iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;
    26. -links<连接数目>:查找符合指定的硬连接数目的文件或目录;
    27. -lname<范本样式>:指定字符串作为寻找符号连接的范本样式;
    28. -ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
    29. -maxdepth<目录层级>:设置最大目录层级;
    30. -mindepth<目录层级>:设置最小目录层级;
    31. -mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
    32. -mount:此参数的效果和指定“-xdev”相同;
    33. -mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
    34. -name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
    35. -newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
    36. -nogroup:找出不属于本地主机群组识别码的文件或目录;
    37. -noleaf:不去考虑目录至少需拥有两个硬连接存在;
    38. -nouser:找出不属于本地主机用户识别码的文件或目录;-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回
    39. 答“y”或“Y”,则放弃执行命令;
    40. -path<范本样式>:指定字符串作为寻找目录的范本样式;
    41. -perm<权限数值>:查找符合指定的权限数值的文件或目录;
           -print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每
    42. 个名称前皆有“./”字符串;
           -print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
           -printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
    45. -prune:不寻找字符串作为寻找文件或目录的范本样式;
    46. -regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;
    47. -size<文件大小>:查找符合指定的文件大小的文件;

    文件大小单元:
    b —— 块(512字节)
    c —— 字节
    w —— 字(2字节)
    k —— 千字节
    M —— 兆字节
    G —— 吉字节
    

    48. -true:将find指令的回传值皆设为True;
    49. -type<文件类型>:只寻找符合指定的文件类型的文件;

    文件类型参数列表:
    f 普通文件
    l 符号连接
    d 目录
    c 字符设备
    b 块设备
    s 套接字
    p Fifo
    

    50. -uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
    51. -used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
    52. -user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
    53. -version或——version:显示版本信息;
    54. -xdev:将范围局限在先行的文件系统中;
    55. -xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。

    UNIX/Linux文件系统每个文件都有三种时间戳:
    访问时间 (-atime/天,-amin/分钟):用户最近一次访问时间。
    修改时间 (-mtime/天,-mmin/分钟):文件最后一次修改时间。
    变化时间 (-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。

  • 相关阅读:
    Java异常处理设计(三)
    TS 3.1
    TS 3.1
    Other
    样式
    Other
    Other
    TS 3.1
    TS 3.1
    TS 3.1
  • 原文地址:https://www.cnblogs.com/wutou/p/16657428.html
Copyright © 2020-2023  润新知