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

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

1
find . -mtime +30 -type d

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

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

 -mtime +30   30天以前

-type d   文件夹

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

 

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

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

 

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

1
find . -mtime +30 -type f

-name "*.log"

-type f  文件

 

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

方法一:

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

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

 

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

 方法二:

1
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<文件大小>:查找符合指定的文件大小的文件;

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

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

1
2
3
4
5
6
7
8
文件类型参数列表:
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/分钟):文件数据元(例如权限等)最后一次修改时间。

 

posted @   悟透  阅读(4269)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示