Linux下查找文件(find, grep)
创始人
2024-11-10 06:09:15

目录

  • 1. find : 按 文件名 正则表达式查找
    • 1.1 按文件名
    • 1.2 按文件类型
    • 1.3 按文件大小查找
    • 1.4 按文件日期查找
      • 1.4.1 按创建日期
      • 1.4.2 按修改日期
      • 1.4.3 按访问日期
    • 1.5 按深度查找
      • 1.5.1 路径作为起始点,向下(向它的子目录)查找 n 层
    • 1.6 高级查找:-exec,-ok,管道
      • 1.6.1 -exce, -ok
      • 1.6.2 管道
  • 2. grep:按 内容 正则表达式匹配查找
  • 3. find 和 grep 结合使用
  • 4. 举例:在某个目录下,查看含有某个字段的目录、文件


Linux 中,一切皆文件,查找文件是必须要掌握的。

1. find : 按 文件名 正则表达式查找

1.1 按文件名

find 路径 -name 名字

// 查找/home 目录下所有以 .c 为后缀的文件  find /home -name "*.c"   

1.2 按文件类型

find 路径 -type 类型

  • 普通类型 f
  • 目录 d
  • 符号链接 l (link)
  • 块设备文件 b
  • 字符设备文件 c
  • socket 文件 s
  • 管道文件 p
find /root/study/c++/ -type d 

1.3 按文件大小查找

find 路径 -size 范围

  • 范围: + 表示大于,- 表示小于,不写表示等于
  • 大小:兆 M(必须大写),千 k(必须小写),c(表示字符)
find /root/ -size +0k -size -10k 

1.4 按文件日期查找

-n:n 天以内
+n: n 天以外

1.4.1 按创建日期

find 路径 -ctime -n/+n  find /root -ctime -10 find /root -ctime +10 

1.4.2 按修改日期

find 路径 -mtime -n/+n 

1.4.3 按访问日期

find 路径 -atime -n/+n 

1.5 按深度查找

1.5.1 路径作为起始点,向下(向它的子目录)查找 n 层

1)最大 n 层

find 路径 -maxdepth n

find ./ -maxdepth 2 

2)最小 n 层

find 路径 -mindepth n

1.6 高级查找:-exec,-ok,管道

1.6.1 -exce, -ok

find 路径 查找方式及名字 -exec shell命令 {} ;
find 路径 查找方式及名字 -ok shell命令 {} ;
-ok 更安全,推荐使用

find ./ -name "*.cpp" -exce ls -s {} \; find ./ -name "*.cpp" -ok ls -s {} \; 

1.6.2 管道

有较多文件时,优先使用

find 路径 查找方式 | xargs shell命令

find ./ -name "*.cpp" | xargs ls -a 

2. grep:按 内容 正则表达式匹配查找

grep 参数 “内容” 在哪个目录或文件查找

参数:

  • -r 递归查找(在目录查找时,可以用这个参数)
  • -n 可以显示该查找内容所在的行号(在文件或目录查找时,可以用这个参数)
  • -i 可以忽略大小写查找
  • -v 反向查找,输出没有匹配到的字符串(不显示 给定的 某字符串 )

可以最后加上 -l(list),显示文件名,不显示具体的内容:

grep -r "chars" ./root -l 

3. find 和 grep 结合使用

先找到文件:find
找到文件后,查找具体哪些文件,包括某个字符串:grep

也可能无法确认文件名,直接用 grep 在某个大目录下查找

4. 举例:在某个目录下,查看含有某个字段的目录、文件

find . 是一体的
| xargs 是一体的 , 管道
grep “内容” 是一体的

1) 查找出目录、文件

find . | xargs grep "charas"  

在这里插入图片描述
2)查找出文件,不找目录

find . type f | xargs grep "charas"  

在这里插入图片描述
3)查找文件以后,只列出文件名;不列具体内容

find . -type -f | xargs grep "chars" -l  

在这里插入图片描述
4)在以上查找的基础上,需要过滤掉一些文件夹

-prune -o -name
-prune -o -type 等

find . -path ./.git -prune -o -type f | xargs grep "custom" -l 

在这里插入图片描述


参考链接:
Linux 下查找文件
Linux查找某个目录下包含某个字段的文件
Linux-find命令-prune用法

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...