当前位置: 首页 > news >正文

linux命令-find指令

1.文件名和路径
参数 说明 示例
-name pattern 按文件名匹配(区分大小写)
-iname pattern 按文件名匹配(忽略大小写)
-path pattern 按路径匹配
-ipath pattern 按路径匹配(忽略大小写)

find . -name "file.txt"
find . -iname "file.txt"
find /home -path "*/documents/*"
find /home -ipath "*/documents/*"

2.文件类型
-type f 查找文件
-type d 查找目录
-type l 查找符号链接

find . -type f
find . -type d
find . -type l

3.权限和所有权
-user username 按文件所有者过滤
-group groupname 按文件所属组过滤
-perm mode 按文件权限过滤
-nouser 查找没有有效所有者的文件
-nogroup 查找没有有效所属组的文件

find . -user "john"
find . -group "staff"
find . -perm 755
find . -nouser
find . -nogroup

4.文件大小
-size +n 查找大于 n 字节的文件
-size -n 查找小于 n 字节的文件
-size n 查找等于 n 字节的文件
-size +nk 查找大于 n KB 的文件
-size -nk 查找小于 n KB 的文件
-size nk 查找等于 n KB 的文件
-size +nm 查找大于 n MB 的文件
-size -nm 查找小于 n MB 的文件
-size nm 查找等于 n MB 的文件

find . -type f -size +1000000
find . -type f -size -1000000
find . -type f -size 1000000
find . -type f -size +100k
find . -type f -size -100k
find . -type f -size 100k
find . -type f -size +100m
find . -type f -size -100m
find . -type f -size 100m

5.执行操作
-exec command {} ; 对找到的文件执行命令
-exec command {} + 对找到的文件执行命令(更高效)
-delete 删除找到的文件
-print 打印找到的文件路径(默认行为)
-ls 以 ls -dils 格式列出找到的文件
-ok command {} ; 对找到的文件执行命令,需用户确认

find . -type f -name "*.log" -exec rm -f {} \;
find . -type f -name "*.log" -exec rm -f {} +
find . -type f -name "*.tmp" -delete
find . -type f -print
find . -type f -ls
find . -type f -name "*.log" -ok rm -f {} \;

6.表达式和逻辑
-and 逻辑与
-or 逻辑或
-not 逻辑非
-a 逻辑与(同 -and)
-o 逻辑或(同 -or)
! 逻辑非(同 -not)

find . -type f -name "*.txt" -and -mtime +7
find . -type f -name "*.txt" -or -name "*.log"
find . -type f -not -name "*.txt"
find . -type f -name "*.txt" -a -mtime +7
find . -type f -name "*.txt" -o -name "*.log"
find . -type f ! -name "*.txt"

7.时间过滤参数:
以下是常用的 find 时间过滤参数及其说明:
1.-mtime
根据文件内容修改时间进行过滤。
-mtime n:查找在 n 天内修改过的文件。
-mtime +n:查找在 n 天以前修改过的文件。
-mtime -n:查找在 n 天内修改过的文件。

# 查找 7 天内修改过的文件
find . -type f -mtime -7

# 查找 7 天以前修改过的文件
find . -type f -mtime +7

# 查找正好 7 天前修改过的文件
find . -type f -mtime 7

2.-atime
根据文件最后访问时间进行过滤。
-atime n:查找在 n 天内访问过的文件。
-atime +n:查找在 n 天以前访问过的文件。
-atime -n:查找在 n 天内访问过的文件。

# 查找 7 天内访问过的文件
find . -type f -atime -7

# 查找 7 天以前访问过的文件
find . -type f -atime +7

# 查找正好 7 天前访问过的文件
find . -type f -atime 7

3.-ctime
根据文件状态改变时间进行过滤。
-ctime n:查找在 n 天内状态改变过的文件。
-ctime +n:查找在 n 天以前状态改变过的文件。
-ctime -n:查找在 n 天内状态改变过的文件。

# 查找 7 天内状态变更过的文件
find . -type f -ctime -7

# 查找 7 天以前状态变更过的文件
find . -type f -ctime +7

# 查找正好 7 天前状态变更过的文件
find . -type f -ctime 7

4.-mmin
根据文件内容修改时间(以分钟为单位)进行过滤。
-mmin n:查找在 n 分钟内修改过的文件。
-mmin +n:查找在 n 分钟以前修改过的文件。
-mmin -n:查找在 n 分钟内修改过的文件。

# 查找 30 分钟内修改过的文件
find . -type f -mmin -30

# 查找 30 分钟以前修改过的文件
find . -type f -mmin +30

# 查找正好 30 分钟前修改过的文件
find . -type f -mmin 30

5.-amin
根据文件最后访问时间(以分钟为单位)进行过滤。
-amin n:查找在 n 分钟内访问过的文件。
-amin +n:查找在 n 分钟以前访问过的文件。
-amin -n:查找在 n 分钟内访问过的文件。

# 查找 30 分钟内访问过的文件
find . -type f -amin -30

# 查找 30 分钟以前访问过的文件
find . -type f -amin +30

# 查找正好 30 分钟前访问过的文件
find . -type f -amin 30

6.-cmin
根据文件状态改变时间(以分钟为单位)进行过滤。
-cmin n:查找在 n 分钟内状态改变过的文件。
-cmin +n:查找在 n 分钟以前状态改变过的文件。
-cmin -n:查找在 n 分钟内状态改变过的文件。

# 查找 30 分钟内状态变更过的文件
find . -type f -cmin -30

# 查找 30 分钟以前状态变更过的文件
find . -type f -cmin +30

# 查找正好 30 分钟前状态变更过的文件
find . -type f -cmin 30
# 查找 7 天内修改过的 `.log` 文件并删除
find . -type f -name "*.log" -mtime -7 -exec rm -f {} \;

# 查找 30 分钟内访问过的文件并打印
find . -type f -amin -30 -exec ls -l {} \;

7.按具体时间过滤
-newermt “time” 查找在指定时间戳之后修改的文件。
-newerct “time” 查找在指定时间戳之后状态变更的文件。
-newerat “time” 查找在指定时间戳之后访问的文件。

find . -type f -newermt '2024-01-01 12:00'(查找2024年1月1日12:00之后修改的文件)
find . -type f -newerct '2024-01-01 12:00'(查找2024年1月1日12:00之后状态变更的文件)
find . -type f -newerat '2024-01-01 12:00'(查找2024年1月1日12:00之后访问的文件)

8.按文件比较时间
-newer file 查找比指定文件新(修改时间更近)的文件。
-older file 查找比指定文件旧(修改时间更早)的文件。

find . -type f -newer reference.txt(查找比reference.txt新修改的文件)
find . -type f -older reference.txt(查找比reference.txt旧修改的文件)

9.按时间范围过滤
-newermt “time1” ! -newermt “time2” 查找在两个时间戳之间修改的文件。

find . -type f -newermt '2024-01-01 00:00' ! -newermt '2024-01-01 23:59'(查找2024年1月1日当天修改的文件)

处理错误提示
如果出现类似 find: I cannot figure out how to interpret ‘2024-01-01’ as a date or time 的错误提示,可以尝试以下方法:
检查系统版本:确保使用的 find 命令版本支持 -newermt 参数。
使用脚本包装:将命令放入脚本中执行,以避免直接在命令行中出现解析问题。

10.其他
-depth 深度优先搜索(先搜索子目录)
-maxdepth n 设置最大搜索深度
-mindepth n 设置最小搜索深度
-empty 查找空文件或空目录
-inum n 按 inode 编号查找
-printf format 自定义输出格式
-quit 查找到第一个匹配文件后退出

find . -depthfind . -maxdepth 2
find . -mindepth 1
find . -type f -empty
find . -inum 12345
find . -type f -printf "%p %s\n"
find . -type f -name "file.txt" -print -quit
http://www.dtcms.com/a/109182.html

相关文章:

  • 卫星升空织密天网,卫星电话架起天地一体通信桥梁
  • 数据结构与算法——单链表的实现及增、插、删、查、印、毁
  • 【c++深入系列】:类与对象详解(中)
  • Golang定时任务管理(中文日志+防重复执行)
  • React 项目使用 pdf.js 及 Elasticpdf 教程
  • lvgl避坑记录
  • lodash库介绍(一个现代JavaScript实用工具库,提供模块化、性能优化和额外功能)JavaScript库(防抖、节流、函数柯里化)JS库
  • 每日一题洛谷P8664 [蓝桥杯 2018 省 A] 付账问题c++
  • 【C++】nlohmann::json 配置加载技术实践:从基础到高级应用
  • OpenLayers:如何控制Overlay的层级?
  • 如何为Linux/Android Kernel 5.4和5.15添加 fuse passthrough透传功能 ?
  • 如何通过管理系统提升团队协作效率
  • 大模型学习二:DeepSeek R1+蒸馏模型组本地部署与调用
  • css动态设置div宽高,calc函数
  • Unity中的动态合批使用整理
  • Vue中虚拟DOM创建到挂载的过程
  • Milvus 向量数据库详解:从核心概念到 Docker 部署实践
  • redis 安装
  • windows批处理命令,执行一个python文件,将命令保存为xxxx.bat文件
  • angular+form实现2048小游戏
  • 41. 评论日记
  • 2025高频面试算法总结篇【二叉树】
  • GLTF(GL Transmission Format)详细介绍
  • 多线程基础
  • 多线程交替打印ABC方法整理
  • 前端入门之CSS
  • rknn_convert的使用方法
  • WebRTC源码解析:Android如何渲染画面
  • Redis是什么?架构是怎么样的?
  • MySQL客户端工具-图形化工具-DataGrip 安装与使用