Linux下查找文件(find, grep)

avatar
作者
猴君
阅读量:0

目录


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用法

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!