linux下 find命令的常规使用
find命令在Linux中非常常用,可以用来查找文件和目录。以下是find命令的常规使用方法:
查找当前目录下所有文件和目录:
find .
查找指定目录下所有文件和目录:
find /path/to/dir
查找指定目录下指定类型的文件,例如查找所有txt文件:
find /path/to/dir -name "*.txt"
查找指定目录下指定时间段内修改过的文件,例如查找7天内修改过的文件:
find /path/to/dir -mtime -7
查找指定目录下指定大小的文件,例如查找大于10M的文件:
find /path/to/dir -size +10M
查找指定目录下指定权限的文件,例如查找权限为755的文件:
find /path/to/dir -perm 755
查找指定目录下指定层数的文件,例如查找深度为2的文件:
find /path/to/dir -maxdepth 2
以上是find命令的常规使用方法,还有更多高级用法可以通过man find命令进行查看。
linux中find命令找文件
如何在Linux中使用find命令查找文件
使用基本路径和名称匹配
为了按照文件名模式来查找文件,可以指定要搜索的目录以及目标文件的名称模式。例如,在整个根目录下寻找名为example.txt
的文件:
find / -name "example.txt"
此操作会从根目录开始遍历所有的子目录去定位符合条件的文件[^1]。
结合类型参数进行筛选
有时仅通过名字可能无法精确锁定所需的资源,这时可以通过添加 -type
参数进一步限定结果集中的成员属性为普通文件(f
)、目录(d
)或其他特殊类型的节点。比如只想要找出某个位置下的所有常规文档而不包括夹层结构,则可如下编写指令:
find ./documents -type f -name "*.pdf"
上述表达式意指于当前用户的 documents 文件夹内检索扩展名为 pdf 的电子书资料[^2]。
利用时间戳特性过滤对象
对于那些关心创建或修改时刻的应用场景而言,find
提供了诸如 mtime
, ctime
和 atime
这样的选项用于基于最近访问/变更的时间间隔挑选条目。假设现在有一个需求是要清理掉超过一周未被改动过的临时工作副本,那么应该这样构建查询语句:
find ~/workspace -type f -name "*.bak" -mtime +7 -print
这里 -mtime +7
表达的是选取自最后一次状态更新至今已过去至少七天的对象,并打印出来以便确认无误后再做处理。
执行关联动作
当希望对满足条件的结果实施某些具体行为时(像前面提到的例子那样直接移除),就可以借助 -exec
子句附加一条或多条待执行的操作命令给每一个匹配项。下面给出了一种安全的方式先展示再决定是否真的要去除这些.log
日志记录:
find /var/log -type f -name "*.log" -exec ls -l {} \;
这条命令的作用是在 /var/log
路径之下罗列所有 .log
类型的日志文件详情列表,其中 {}
是占位符代表单个发现的目标实例;而 \;
标记着所附带命令串的终点。
linux find命令示例
Linux find
命令使用示例
查找特定名称的文件
为了按照文件名查找文件,可以使用 -name
参数。例如,在 /home/user/documents/
目录及其子目录中查找名为 example.txt
的文件:
find /home/user/documents/ -name "example.txt"
此命令会返回所有符合条件的结果[^3]。
按照文件类型进行搜索
当需要区分不同类型的文件时,比如只想要查找常规文件而不是目录或其他特殊类型的节点,可利用 -type
选项加上相应的字母来限定搜索范围。f 表示普通文件;d 则代表目录:
find . -type f # 找到当前目录下的所有普通文件
find . -type d # 只列出所有的子目录而不包括其中的内容
上述例子展示了如何定位具体的项目类别。
定位超过一定尺寸的数据对象
对于那些占用大量存储空间的大文件来说,可以通过指定最小字节数的方式快速锁定目标。下面的例子说明了怎样找出大于等于10MB的所有文件:
find /path/to/search -size +10M
这里使用的单位有 c (bytes), k (kilobytes), M (megabytes),G (gigabytes).
寻找最近被修改过的文档
有时可能希望知道哪些文件在过去几天内有过更新活动。这时就可以借助于 -mtime
来设定天数界限来进行筛选:
find ~/projects -mtime -7 # 显示过去七日内更改过的时间戳记记录
负号表示“小于”,即在此期间内的变动都会被捕获;而正数值则意味着更早之前的状态变化.
清理陈旧的日志条目
假设有一个需求是要定期清除掉三个月前生成的日志档案,那么可以组合多个条件实现这一目的:
find /var/log -type f -name "*.log" -mtime +90 -exec rm {} \;
这条指令先指定了要操作的是什么类型的实体(这里是.log
结尾的日志),接着限定了时间跨度为九十天以前,并最终采取行动——删除这些匹配项[^2].
相关推荐













