find 基本操作
find 查找文件基本操作
1.根据时间戳查找删除文件
- 访问时间戳(atime):最后一次读取文件的时间。
- 修改时间戳 (mtime):文件内容最后一次被修改的时间。
- 更改时间戳 (ctime):上次更改文件元数据的时间(如,所有权、位置、文件类型和权限设置)
+
表示“大于”,-
表示“小于”
#查找超过一年的文件
find . -type f -atime +365 -exec rm -rf {} \;
#查找8天前的文件
find . -type f -mtime 8
#搜素5~10天前的文件
find . -type f -ctime +5 -ctime -10
#查找今天的修改的文件
find / -ctime -1
2.根据文件名查找
find / -name test.txt
3.根据正则查找
find / -type f -name "*.pdf"
4.根据文件类型查找 -type
七种文件类型: -,d,b,c,l,p,s
find . -type l -name "favicon*"
5.查找大小 -size
find -size [+|-]#UNIT
常用单位:k, M, G,c(byte),注意大小写敏感
#UNIT: (#-1, #] 如:6k 表示(5k,6k]
-#UNIT:[0,#-1] 如:-6k 表示[0,5k]
+#UNIT:(#,∞) 如:+6k 表示(6k,∞)
#查找文件大于10M,小于1G的文件 find / -type f -size +10M -size -1G
find / -size +10M
6. 根据权限查找 -perm
find / -type f -perm 777
7.按所有者权限查找文件 -user
find / -type f -user wei
8. 查找后执行命令 -exec
注意:占位符 {}
非常重要,尤其是在您想删除文件时。因为,如果您不使用它,该命令将对所有文件执行(而不是您刚刚通过 find 命令找到的文件)。或者配合xargs使用
#查找一年的文件删除 find / -type f -atime +365 -exec rm -rf {} \;
find / -type f -name logfile -ok rm -rf {} \;
find / -type f -name log |xargs rm -f
对比使用区别
-exec 选项后面的命令必须以分号(;
)结束,转义字符用于去除单个字符的特殊含义。在 Linux 中,反斜杠 \
用作转义字符,所以将它用于分号字符
find / -type f -atime +10 -exec ls {} \; find / -type f -atime +10 -exec ls \;
9.其他功能
-print: 默认的处理动作,显示至屏幕
-ls: 类似于对查找到的文件执行"ls -dils"命令格式输出
-fls file: 查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file
-delete: 删除查找到的文件,慎用!
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会
交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
{}: 用于引用查找到的文件名称自身
#备份配置文件,添加.orig这个扩展名 find -name ".conf" -exec cp {} {}.orig \; #提示删除存在时间超过3天以上的joe的临时文件 find /tmp -ctime +3 -user joe -ok rm {} \; #在主目录中寻找可被其它用户写入的文件 find ~ -perm -002 -exec chmod o-w {} \; #查找/data下的权限为644,后缀为sh的普通文件,增加执行权限 find /data –type f -perm 644 -name "*.sh" –exec chmod 755 {} \; #查找有特殊权限的文件,并排序 find /bin/ -perm /7000 | xargs ls -Sl