8、文件搜索命令

文件搜索命令包含以下几种:
- 文件搜索命令 locate
- 命令搜索命令 whereis 与 which
- 文件搜索命令 find
- 字符串搜索命令 grep
- find 命令与 grep 命令的区别

1、文件搜索命令locate命令

  • 与 find 命令相比,速度更快,它是在后台数据库(/var/lib/mlocate)中按文件名搜索;因此新建的文件需要更新数据库才能搜索成功
  • 功能单一,只能搜索文件名

语法:

locate 文件名
updatedb 更新数据库(在新建文件后可以手动更新,也可以自动更新)
locate locate  查找与locate相关的命令,查看数据库名称

/etc/updatedb.conf 配置文件:

  • locate 命令搜索时会遵循如下限制(当为yes时),因此比如在 /tmp 目录下的文件就搜索不到
  • PRUNE_BIND_MOUNTS = “yes”:开启搜索限制
  • PRUNEFS = :搜索时,不搜索的文件系统
  • PRUNENAMES =:搜索时,不搜索的文件类型
  • PRUNEPATHS =:搜索时,不搜索的路径

2、命令的命令 whereis

whereis 命令用于搜索命令所在路径及帮助文档所在位置,只能搜索系统命令,不能搜索文件/目录

语法:

whereis 命令名
选项:
    -b:只查找可执行文件
    -m:只查找帮助文档

搜索ls命令所在位置和帮助文档所在位置:

/bin/ls:ls命令所在位置,后面的为帮助文档

3、which 命令

which 命令用于 搜索命令所在位置及命令别名

语法:

which 命令

shell 自带的命令不能通过 whereis 和 which 查看,如 cd

PATH环境变量:

定义的是系统搜索命令的路径,当执行命令时,系统会在 PATH下的路径去寻找并执行命令,可用 echo $PATH 查看这些路径;当想运行自己写的脚步或者某个程序时,也可以添加路径

[root@localhost ~]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

linux 添加环境变量 PATH

4、find 命令

语法:

find [搜索范围] [搜索条件]
find / -name install.log  //根目录搜索会耗费系统资源
  • 避免大范围搜索,会非常耗费系统资源
  • find 是在系统当中搜索符合条件的文件名,如需要匹配使用通配符匹配,通配符是完全匹配

Linux 中的三种常用通配符:

  • *:匹配任意内容
  • ?:匹配任意一个字符
  • []:匹配任意一个中括号内的字符
  • 使用通配符应放在双引号内

find /root -name "ab[cd]"          //搜索 abc、abd 的文件
find /root -name "*[cd]"           //搜索以 c/d 结尾的文件

find /root -iname install.log   //不区分大小写
find /root -user root    // 按照所有者搜索
find /root -nouser   // 查找没有所有者的文件

ps:Linux 中除了内核(kernel)产生的文件及外部文件没有所有者外,其他的都应有所有者,因此可以用 find /root -nouser 命令查找Linux 中的垃圾文件

find /var/log/  -mtime +10   //查找10天前修改的文件
  • -10:10天内的修改文件
  • 10:10天当天修改的文件
  • +10:10天前修改的文件
  • atime:文件访问时间(access)
  • ctime:改变文件属性(change)
  • mtime:修改文件内容(make)

find . -size 25k    // 查找文件大小是25kb的文件,(.表示当前目录),也可以查找(兆M)
ls -i   //查找i节点
find . -inum 262422  //查找i节点是262422的文件
  • -25k:小于等于25kb的文件
  • 25kb:等于25kb的文件
  • +25kb:大于25kb的文件
find /etc -size +20k -a -size -50k   //查找/etc/目录下,大于20kb且小于50kb的文件
-a  and 逻辑与,两个都满足
-o  or  逻辑或,两个满足一个即可
ls -lh /etc/mine.types      //查看 mine.types 这个文件的详细信息
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
//查找/etc/目录下,大于20kb且小于50kb的文件,并且显示详细信息(将find命令查找出的交给第二天命令处理即(exec 后的命令 ,如 ls -lh))
-exec/-ok 命令 {} \; 对搜索结果执行操作

5、grep 命令

语法:

字符串搜索命令:grep

grep [选项] 字符串 文件名     //在文件中匹配符合条件的字符串
选项:
    -i  忽略大小写
    -v  排除指定字符串(除...以外的字符串)
grep "size" install.log  //搜索 字符串 size 在 install.log中

6、find 与 grep 的区别

  • find:在系统中搜索符合条件的文件名,若需要匹配则使用通配符匹配,通配符是完全匹配
  • grep:在文件中搜索符合条件的字符串,若需要匹配使用正则匹配,正则是包含匹配
  • grep命令时模糊匹配,只要字符串中含要查找的字符串,都会计算在内

猜你喜欢

转载自blog.csdn.net/hj1993/article/details/81813179