Linux学习-2-搜索命令

原创 2018年04月16日 11:36:50

一:locate命令

在后台数据库中按文件名搜索,搜索速度更快

使用方式:locate 【文件名】

注意:locate搜索命令是去系统的数据库进行搜索,数据库位置在 /var/lib/mlocate;因为该数据库的更新是默认一天已更新,所以要想搜索当天刚创建的文件,需要手动更新数据库 ;命令:updatedb

locate命令是根据/etc/updatedb.conf这个配置文件进行搜索的:

  1. PRUNE_BIND_MOUNTS = “yes” 表示开启搜索限制;
  2. PRUNEFS = 表示搜索时,不搜索的文件系统;
  3. PRUNENAMES = 表示搜索时,不搜索的文件类型;
  4. PRUNEPATHS = 表示搜索时,不搜索的路径。

查看该文件:

PRUNE_BIND_MOUNTS = “yes”
PRUNEFS = “9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs”
PRUNENAMES = “.git .hg .svn”
PRUNEPATHS = “/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp”

可以看到,locate命令是不会去查找/tmp目录下的文件,如果我们在/tmp下新建一个文件,再执行updatedb 操作,用locate命令还是查找不到所创建的文件,原因就是因为该配置文件过滤掉了。

注意:which和whereis命令同样根据该配置文件进行搜索

二:命令搜索命令

顾名思义,就是用来搜索linux命令所在的位置
1:whereis 命令

搜索命令所在路径及帮助文档所在位置。
例如:whereis ls

选项:
-b:只查找可执行文件所在路径
-m:只查找命令的帮助文件所在路径

2:which 命令

搜索命令所在路径及别名。
例如:which cat

区别:

  1. whereis能够查找到命令的帮助文档(以.gz结尾的文件),而which不行
  2. which命令可以查看命令的别名,如:which ls 是ls –color=auto的别名

如下:

[root@VM_89_251_centos etc]# which ls
alias ls=’ls –color=auto’
/usr/bin/ls
[root@VM_89_251_centos etc]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

3:PATH环境变量

其实我们所敲的系统命令都应该敲命令的绝对路径,如ls命令应该敲/bin/ls。但是由于配置了环境变量,当我们敲命令如ls的时候,首先会去环境变量中找,找到了就会执行,没找到就会报错找不到命令。

查看环境变量所在的位置:

[root@VM_89_251_centos ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/soft/devo/java/jdk1.8.0_131/bin:/opt/soft/devo/hadoop/hadoop-2.6.1/bin:/root/bin

3:find命令

find命令是一个很强大的命令,可以带很多参数根据不同的需求进行查询

命令为 find [搜索范围] [搜索条件]

例如 :在root下查找文件名为durant的文件; find /root -name durant

注意:要尽量避免扩大搜索范围,也就是尽量不要用find /

find是在系统当中搜索符合条件的文件名,需要文件名完全匹配。使用通配符后可以进行模糊查询。

Linux中的通配符

1: * 匹配任意内容
2: ? 匹配任意一个字符
#: [] 匹配任意一个中括号内的字符
如:

[root@VM_89_251_centos ~]# find /root -name jcy
/root/jcy
[root@VM_89_251_centos ~]# find /root -name ‘jcy*’
/root/jcya
/root/jcy
/root/jcy/aa/jcy.txt
[root@VM_89_251_centos ~]# find /root -name ‘jcy[ab]’
/root/jcya
/root/jcyb

为了更好的进行匹配,请用单引号将查找内容引起来

find /root-user root:按照所有者搜索。这里表示按root用户搜索其所拥有的文件。

find /root-nouser:查找没有所有者的文件。

注:没有所有者的文件一般都是垃圾文件,我们可以手动把它们删除。除了下面两种情况,第一种,由系统内核产生的文件,如/proc和/sys目录下的文件,文件可能没有所有者;
第二种,外来接入的U盘、光盘等,此外里面的文件如果由Windows产生则不存在所有者。(Windows系统不是没有文件所有者这个概念,而是它忽略了这个概念。)

find /var/log/ -mtime +10:查找10天前修改的文件。

选项:
-atime:文件访问时间

-ctime:改变文件属性

mtime:修改文件内容

参数,如:

-10:10天内修改的文件

10:10天当天修改的文件

+10:10天前修改的文件

find .-size 25k:查找文件大小为25KB的文件。这里查找的是当前目录下。

参数,如:

-25k:小于25KB的文件

25:等于25KB的文件

+25k:大于25KB的文件

注:可以搜索以MB为单位的文件,如find . -size 2M。

注意:此处查找文件大小时,k为小写,M为大写

find . inum 234567:查找i节点为234567的文件。(通过ls -i [文件名]可以查看文件的i节点)

find /etc-size +20k -a -size -50k:查找/etc/目录下,大于20KB并且小于50KB的文件。

选项:

-a(and):逻辑与,两个条件都要满足

-o(or):逻辑或,两个条件满足一个即可

find查询后跟操作

-exec [操作命令] {} \;
例如:

[root@VM_89_251_centos ~]# ls
aa ab anaconda-ks.cfg
[root@VM_89_251_centos ~]# find /root -name aa -exec rm -rf {} \;
[root@VM_89_251_centos ~]# ls
ab anaconda-ks.cfg
[root@VM_89_251_centos ~]#

注意 {}和 \ 之间要有空格,否则会报错missing -exec

四:字符串命令grep

按照条件搜索内容,并将该行内容显示

用法:grep [选项] 字符串文件名:在文件当中匹配符合条件的字符串。

选项:

-i 忽略大小写

-v 排除指定字符串

[root@VM_89_251_centos ~]# ls
ab anaconda-ks.cfg
[root@VM_89_251_centos ~]# grep “dd” ab
dddddddddddd
[root@VM_89_251_centos ~]# grep “ss” ab
sssssssssssssss
[root@VM_89_251_centos ~]# grep “dd” -v ab
qqqqqqqqqqqqqqqq
sssssssssssssss
fffffffffffffffff

[root@VM_89_251_centos ~]#

五:find命令与grep命令的区别

find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。
grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配。

  1. 完全匹配:完全满足要求才会返回结果
  2. 包含匹配:不管如果,只要内容包含查询条件就会返回
版权声明: https://blog.csdn.net/weixin_38956287/article/details/79954160

Linux常见四种查找命令

最近在学Linux,和很多初学者一样,有一大堆的操作命令要去熟悉和掌握,由于Linux秉承“一切皆文件”的思想,因此我们在操作中经常会使用到文件查找的命令喽,下面就简单介绍下在Linux中比较常用的查...
  • qq_21550341
  • qq_21550341
  • 2016-06-11 14:12:37
  • 779

Linux下查找命令

Linux下查找命令(收集整理)一.Linux查找文件的相关命令 常 用 命 令 ...
  • bluedreamcloud
  • bluedreamcloud
  • 2008-06-29 11:37:00
  • 5973

linux常用命令

  • 2014年12月17日 00:20
  • 1.55MB
  • 下载

linux命令行历史记录搜索,然后再执行

linux命令行历史记录搜索,然后再执行
  • doctor_who2004
  • doctor_who2004
  • 2015-01-19 21:40:07
  • 5177

linux下使用ack进行代码搜索

linux下使用ack进行代码搜索 Linux | 2014-03-06 22:38:36 | 5165次阅读 | 0评 1、安装 wget http://beyondgrep.co...
  • Fate_Dream
  • Fate_Dream
  • 2017-01-20 16:41:47
  • 660

Linux学习---搜索命令

1.文件搜索命令locate基本命令格式:locate -[ir] keyboard参数: -i,忽略大小写。 -r,后方接正则表达式(regex的含义)。 locate搜索:locate寻找到数据是...
  • qq_16811963
  • qq_16811963
  • 2016-10-23 10:35:21
  • 135

linux下的几个查找命令的区别

findfind是最常见和最强大的查找命令,也是我们用的最多的命令locatelocate要比find快得多,因为它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库...
  • chenghuikai
  • chenghuikai
  • 2016-07-23 23:58:14
  • 711

Linux查找关键字命令

  • 2014年04月04日 10:49
  • 425B
  • 下载

常用linux日志查询命令

原文及更多文章请见个人博客:http://heartlifes.com1.查看实时日志:tail -f nohup.out2.分页查看所有日志:cat nohup.out | more4.分页查看前N...
  • janwen2010
  • janwen2010
  • 2017-06-09 10:12:22
  • 2329

linux反向搜索执行过的命令

linux命令行的history是一个熟知但不常用的命令,原因是要查某个命令的编号需要输入 history|grep xxx ,又因为!?xxx,!xxx 属于运行即执行也不方便,ctrl+r则方便多...
  • rangf
  • rangf
  • 2011-05-06 15:09:00
  • 3869
收藏助手
不良信息举报
您举报文章:Linux学习-2-搜索命令
举报原因:
原因补充:

(最多只允许输入30个字)