find
是 Linux 和类 Unix 系统中一个非常强大且灵活的命令行工具,用于在指定目录树中搜索满足特定条件的文件和目录。以下是一些 find
命令的基本用法和示例:
基本语法
find [path] [expression]
[path]
:指定搜索的起始路径。如果不提供,默认从当前目录开始。[expression]
:定义查找文件应满足的一系列条件或动作。这些可以是选项(如-name
、-type
)、测试条件以及操作符。
常用选项及表达式
-name pattern
:按照名称匹配,例如查找名为 "example.txt" 的文件:find /home/user -name "example.txt"
-type t
:按类型查找,其中 t 可以是f
(文件)或d
(目录):find /var/log -type f # 查找所有日志目录下的文件 find /etc -type d # 查找/etc下所有的子目录
-mtime n
:根据修改时间查找文件,n 可以为正数(n天前修改过的)、负数(n天内修改过的)或0(今天修改过的):find . -mtime -7 # 查找过去7天内修改过的文件
-user username
或-uid userid
:查找属于指定用户的文件:find / -user alice # 查找整个系统中属于用户alice的所有文件
-exec command {} \;
:对搜索结果执行命令。{} 会被替换为每个找到的文件名:find . -name "*.bak" -exec rm -f { } \; # 删除当前目录及其子目录下所有.bak后缀的文件
-size [+|-]num[ckMG]
:按大小查找文件,可以指定大于(+)、小于(-)或等于特定大小的文件:find /data -size +10M # 查找/data目录下大于10MB的文件
示例
查找根目录下所有的隐藏文件(即文件名以点 .
, 开头的文件):
find / -name ".*"
查找并删除系统中30天未被访问过的临时文件:
find /tmp -atime +30 -type f -delete
注意:在使用 find
命令时务必谨慎,特别是带有 -exec
参数或者进行删除等操作时,避免误删重要文件。