Linux系统学习---文件查找和文件内容搜索(二)

文件查找

whereis 查找命令

查找某个特定的程序和命令的二进制文件()、源代码和man手册的位置
格式 whereis [ 选项] 文件

-b 只找二进制格式的文件
-m 只找手册文件
-s 只找源文件

-B /path/to/dir : 限制在指定的目录搜索二进制文件.
-M /path/to/dir : 限制在指定的目录搜索man手册文件.
-S /path/to/dir : 限制在指定的目录搜索二进制文件.

在使用了-B , -M , -S 任意一个参数时,必须加上 -f 参数, 然后指定要搜索的文件名.


which查找命令

根据PATH环境变量的路径去找命令(注意不同用户的PATH可能不一样)
格式 which [ -a ] 命令名
-a 将PATH目录中所有找到的结果都列出来,默认是只列出找到的第一个的

在centos下 可以查看别名,但在ubuntu下不行


查找文件 locate / updatedb

locate 不会去直接搜索磁盘,而是在系统数据库中查找文件,所以比较快速
数据库文件位置:/var/lib/mlocate/内
数据库默认是每天执行一次(不同版本不一样),如果新获取的文件后面收录进去,搜索不到
手动更新locate的数据库:updatedb

格式 :locate [ 选项 ] 文件名

-i 忽略大小写的差异
-c 不输出文件名,只计算文件的数量
-l 仅输出几行,若输出五行 则 -l 5
-s 输出locate所使用的数据库文件相关信息,包括记录的文件和目录数量
-r 后面接正则表达式的显示方式


查找文件find

查找文件,在磁盘中查找,比较万能,但是速度较慢
格式 : find [ PATH ] [ option ] [ation]
find 路径 选项 参数
默认连同子目录一起搜索的,比较耗磁盘资源

不写路径时,默认在当前路径下找

1、与时间有关的选项

共有-atime、-ctime、mtime,以-mtime说明

      -mtime  n : n为数字,意义为  n天之前的一天之内 修改过的文件
      -mtime  +n : 列出在n天之前(不包含第n天 ) 修改过的文件
      -mtime  -n  : 列出在n天之内(含第n天)修改过的文件
      -newer   [ 一个存在的文件名]  :列出比这个文件还要新的文件

举例 :
查找/etc 下面的文件,一天内修改过的文件

find /etc  -mtime 0      #第0天之前,一天内,,,也就是今天

查找/etc 下面的文件,比passwd还新的文件

find /etc -newer /etc/passwd

2、与用户和用户组有关的参数

-uid  n     n为数字,是使用者的id ,就是uid,记录在pswwd里面
   -gid  n     n为数字,是用户组的id ,就是gid,记录在group里面
   -user  【name】   使用者的名称
   -group  【name】   用户组的名称
  -nouser       查找拥有者不在passwd的
   -nogroup    查找用户组不在group中的

3、与文件权限及名称相关的参数

-name  【名字】  查找名为这个名字的文件   *代表多个未知字符,
  -size    [ + - ][size]  +代表查找比size大的文件,-代表查找比size小的文件  如 -size  +20k
  -type  [类型]    查找类型为这个的文件,正规文件(f)  设备文件(b、c) 目录(d) 链接(l)
  -perm [权限]   查找权限刚好为这个权限的文件  如 -perm 4771
  -perm -[权限]   查找权限包括这个权限的文件  如 -perm -4771
  -perm /[权限]    查找权限包含这个权限的任一个的权限的文件  -perm /4771

4、组合
-o 是或者的意思
-a 是而且的意思
-not 是相反的意思

5、其他

  -exec 【命令】  这个选项后可接其他命令来处理查询的结果
  -print    输出在屏幕,这是默认的
  -mindepth 【数字】 指定查找目录深度

实例
查找出所有.c文件并删除

find -name *.c -exec rm -rf {} \;

这是固定格式

文件内容搜索

grep命令

可在文件内查找特定内容

格式为:grep [选项] ”模式“ [文件]

常用选项

-n 输出显示行号
-v 去除包含此参数的行,输出剩余行
-i 忽略字符大小写的差别
-c:只输出匹配行的计数。
-q:不输出到终端
-A,-B,-C:三者后面都是接阿拉伯数字
-A是显示匹配后和它后面的n行
-B是显示匹配行和它前面的n行
-C是匹配行和它前后各n行

实例
在文件中搜索一个单词,命令会返回包含“match_pattern”的文本行:

grep gfx /etc/passwd

结果:

在多个文件中查找

grep "match_pattern" file_1 file_2 file_3 ...

不显示注释

grep -v "#" file_name

使用正则表达式 -E 选项

grep -E “[1-9]+”
egrep “[1-9]+”

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GuanFuXinCSDN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值