find command
1
2
|
# Linux 服务器上有一个名为 logs 的目录,删除该目录下最后一次访问时间超过一年的日志文件
find . -type f -atime +365 -exec rm -rf {} \;
|
按名称或正则表达式查找文件
1
2
3
4
5
|
find . -name test.txt
find ./yang/books -name "*.pdf"
find ./yang/books -type f -name "*.pdf"
|
查找不同类型的文件
1
2
3
4
5
6
|
# d 目录
find . -type d -name "yang*"
# l 符号链接
find . -type l -name "yang*"
|
按指定的时间戳查找文件
- 访问时间戳(atime):最后一次读取文件的时间。
- 修改时间戳 (mtime):文件内容最后一次被修改的时间。
- 更改时间戳 (ctime):上次更改文件元数据的时间(如,所有权、位置、文件类型和权限设置)
1
2
3
4
5
6
|
# + 表示“大于”,- 表示“小于”
find . -type f -atime +365
find . -type f -mtime 5
find . -type f -ctime +5 -ctime -10
|
按大小查找文件
1
2
|
# 查找大小为 10 MB ~ 1 GB 的文件
find . -type f -size +10M -size -1G
|
按权限查找文件
1
2
|
# 搜索所有具有 777 权限的文件
find . -type f -perm 777
|
按所有权查找文件
1
|
find -type f -user yang
|
在找到文件后执行命令
占位符 {} 非常重要,尤其是在您想删除文件时。因为,如果您不使用它,该命令将对所有文件执行(而不是您刚刚通过 find 命令找到的文件)
1
2
|
#命令在 -exec 选项后是 rm -rf,其用于删除文件。{} 是用于查找结果的占位符
find . -type f -atime +365 -exec rm -rf {} \;
|
-exec 选项后面的命令必须以分号(;)结束。转义字符用于去除单个字符的特殊含义。在 Linux 中,反斜杠\用作转义字符。所以我们将它用于分号字符