linux命令-find【根据文本查找文件】

linux命令-find【根据文本查找文件】

  • why
  • find命令语法
  • 按文件名找
  • 根据[权限]查找
  • 修改文件权限
  • 查找所有包含指定文本的文件
  • 根据文件大小查找
  • 根据文件修改日期查找
  • 查找 并删除文件
  • 总结
  • 参考文档

why

find 命令是在linux系统,地表最强工具之一。可以在目录层次结构中搜索文件和目录,并且对匹配结果执行操作。
一般搜索功能包括:

  • 权限
  • 类型
  • 日期
  • 所有权
  • 大小
  • 结合grep / sed 使用

find命令语法

常规语法:

find [][path...] [expression]
  • options - 定义开始查询的一个或多个目录
  • expression - 由于选项、搜索模式、运算分隔的操作组成

按文件名找

查找 包含hell的文件

find /home -type f -name *hell*

/home代表目录
/type f 是文件类型 d目录
-name 名字模糊匹配hell 或者*.log.gz查找 指定扩展名

根据[权限]查找

find /etc -perm 644 # 这里要是数字才行

r【读】:4
w【写】:2
x【执行】:1
644 从左到右分别是 owner /group/ other
linux命令-find【根据文本查找文件】_第1张图片

可参考permissions

修改文件权限

find /var -type f -exec chmod 0755 {
     } \;

{} ; 代表查询的结果并结束命令 \代表转义

查找所有包含指定文本的文件

find /var -type f -exec grep 'hello' {
     } \; -print
grep car `find -type f -name '*.txt'`  # 这种方式显示更优雅

{} ; 代表查询的结果并结束命令 \代表转义
linux命令-find【根据文本查找文件】_第2张图片

根据文件大小查找

通过参数-size实现。可以使用以下后缀指定文件大小:

  • b : 512字节块
  • c: 字节
  • w: 两字节
  • k: 千字节
  • M: 兆字节
  • G: 千兆字节
    示例:
    搜索大小范围内的文件。在1-2MB之前 的文件:
find . -type f -size +1M -size -21M  -ls

根据文件修改日期查找

find /etc -name "*.yml" -mtime 5 # 最近5天修改
find /etc -mtime +30 -daystart # 30天以前修改的

查找 并删除文件

find /etc -name 'test*' -delete

find 只能删除非空目录,类似rmdir

总结

以上展示如何在各种选项和条件下使用find命令。
本文也只是抛砖引玉。更多强大功能可以访问官网

参考文档

  • find使用
  • chrom使用
  • 文件权限
  • opensource小讨论
  • setuId/setgid/sticky

你可能感兴趣的:(linux,linux,shell)