Find操作

例如想找到磁盘上所有大于100M的文件:

find / -size +100M -ls

如果想指定一个大小范围:

find / -size +10M -size -12M -ls

Find介绍

find 是 Linux 中一个非常强大且常用的命令,用于在指定目录下查找文件和目录。它能够根据各种条件(如名称、大小、修改时间、权限等)查找文件,并可以执行指定的操作。

基本语法:

find [查找路径] [查找条件] [操作]

常见的选项和条件:

  • -name: 按名称查找文件或目录(支持通配符)。
  • -type: 查找指定类型的文件,如 f 表示普通文件,d 表示目录。
  • -size: 按文件大小查找,+ 表示大于,- 表示小于。例如,-size +100M 表示查找大于 100MB 的文件。
  • -mtime: 按修改时间查找,-n 表示 n 天以内,+n 表示 n 天以前。
  • -atime: 按访问时间查找,类似于 -mtime
  • -user: 查找属于某个用户的文件。
  • -perm: 按权限查找文件或目录。
  • -exec: 查找到文件后执行命令。
  • -delete: 删除查找到的文件或目录。

示例:

1. 按名称查找文件

查找 /home/user 目录下所有名为 file.txt 的文件:

find /home/user -name "file.txt"

2. 使用通配符查找文件

查找 /var/log/ 目录下以 .log 结尾的所有文件:

find /var/log/ -name "*.log"

3. 查找指定类型的文件

查找 /etc 目录下所有目录:

find /etc -type d

查找 /etc 目录下所有普通文件:

find /etc -type f

4. 按大小查找文件

查找大于 100MB 的文件:

find / -size +100M

查找小于 1KB 的文件:

find / -size -1k

5. 按修改时间查找文件

查找过去 7 天内修改的文件:

find / -mtime -7

查找 30 天前修改的文件:

find / -mtime +30

6. 按访问时间查找文件

查找 2 天前访问过的文件:

find / -atime +2

7. 查找属于特定用户的文件

查找用户 root 所拥有的文件:

find / -user root

8. 查找符合特定权限的文件

查找具有 755 权限的文件:

find / -perm 755

9. 查找并执行命令

查找 /var/log 目录下 .log 文件并删除它们:

find /var/log -name "*.log" -exec rm {} \;

{} 中插入找到的文件路径,\; 表示命令结束。

10. 查找并删除文件

查找并删除 /tmp 目录下所有 7 天前修改的 .tmp 文件:

find /tmp -name "*.tmp" -mtime +7 -delete

11. 查找空文件或目录

查找空文件:

find / -type f -empty

查找空目录:

find / -type d -empty

总结:

find 命令是一个非常灵活且功能强大的文件搜索工具。它不仅可以根据文件名、大小、时间等条件查找文件,还可以结合其他命令对查找到的文件进行处理,如删除、移动、修改权限等操作。在执行批量操作时要小心,特别是带有 -exec-delete 的操作。