Linux 搜索命令(locate/find/whereis/which/grep)

locate 文件名搜索


原理:从后台数据库中进行文件名搜索,不会遍寻整个系统。所以速度较快。缺点也是只搜索文件名。

安装
yum install mlocate

locate命令的后台数据库
/var/lib/mlocate
在不同版本中可能是不同的名字,比如slocate

数据库更新的配置文件
/etc/updatedb.conf
(可以配置搜索限制条件以及是否开启限制,默认开启)
命令

locate 文件名  //查找文件位置
updatedb //更新数据库(数据库默认一天更新一次)

更新DB(updatedb)需要用root权限,
另外默认不搜索的目录等设置参考/etc/updatedb.conf

默认etc配置文件规定不搜索tmp、cache、media等目录 以及各种文件系统,包括iso9660 cifs ··

whereis 和which


whereis

搜索”命令”的命令。搜索系统命令所在路径及帮助文档所在位置
只能搜索系统命令,不能搜索自己创建的命令

命令

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

which

搜索”命令”的命令。搜索系统命令位置和别名

命令

which  命令名
//输出该命令的位置以及别名

shell内置的命令是无法找到执行文件的(shell自带),外来命令才可以找到。

环境变量$PATH
执行命令是去PATH中的路径中去寻找相应的命令(以绝对路径的形式来进行执行),都找不到时则返回命令没有发现。

find


功能众多导致选项多。

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

例:find / -name "abc"
    //避免使用大范围的搜索,占用系统资源,文件名可以使用通配符进行完全匹配。注意加双引号。
主要通配符
  1. * 任意内容(可以为多个字符)
  2. ? 任意字符 (只能是一个字符)
  3. [ ] 挂号中的任意一个字符(只能是一个字符)
find /root -name "xxx" 搜索文件名

find /root -iname "xxx" 搜索文件名不区分大小写

find /root -user root 查找所有者为root

find /root -nouser 搜索没有所有者文件(垃圾文件,内核文件,外来文件)## 标题 ##

find /var/log -mtime +10 
按照天数搜索 
+10十天前 ,
10第十天,
-10十天内
// mtime  修改文件内容的时间 modify (修改)
// ctime  改变文件属性的时间 change
// atime  文件访问的时间 access
find . -size -25k 按照文件大小搜索,小于25kB的文件(小写k)

find /root -size +2M
大于2M的文件(大写M) 

find . -inum 262422 i节点查找
操作-exec ls -lh {} \;

find /root -size +20 -a -size -50k   
//同时满足两个要求,-a 起 与的作用(and/&&)   -o  或的作用(or/||)
######################
find /root -size +20 -and -size -50k -exec ls -lh {} \;
//在执行完第一个命令后,继续执行第二个命令(可以在运行完第一个后可以执行的命令),后面的符号为固定格式。

grep


在某个文件中搜索指定的内容,使用包含匹配,使用正则表达式。

命令
grep [选项] 字符串 文件
i-忽略大小写
v-排除指定字符串

*搜索文件名 使用通配符
搜索文件中的内容则是使用正则表达式。*

Linux下查看某个目录下的文件、或文件夹个数

用到3个命令:
ls列目录、用grep过虑、再用wc统计。
举例说明:
1、查看统计当前目录下文件的个数
  ls -l | grep “^-” | wc -l
2、查看统计当前目录下文件的个数,包括子目录里的。
  ls -lR| grep “^-” | wc -l
3、查看某目录下文件夹(目录)的个数,包括子目录里的。
  ls -lR| grep “^d” | wc -l

命令解释:
ls -l
长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等),每一行对应一个文件或目录,如果要列出所有子目录下的文件就是ls -lR。
grep “^-”
这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是grep “^d”。
wc -l
统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux中有多种用于查找文件和目录的指令,下面是对which、whereislocate、find和grep指令的介绍以及示例: 1. which:用于查找可执行文件的路径。它会在环境变量$PATH指定的路径中搜索指定的命令,并返回第一个匹配到的完整路径。 示例:假设我们要查找命令ls的路径,可以使用以下命令: ``` which ls ``` 输出结果可能是:/bin/ls 2. whereis:用于查找二进制文件、源代码文件和帮助文档的路径。它会在特定的目录中搜索指定的文件,并返回相关信息。 示例:假设我们要查找命令ls的二进制文件、源代码文件和帮助文档的路径,可以使用以下命令: ``` whereis ls ``` 输出结果可能是:/bin/ls /usr/share/man/man1/ls.1.gz 3. locate:用于快速查找文件或目录。它会在系统预先建立的数据库中搜索匹配的文件或目录,并返回结果。 示例:假设我们要查找所有以.txt结尾的文件,可以使用以下命令: ``` locate *.txt ``` 输出结果可能是:/home/user/file1.txt /home/user/file2.txt /var/log/file3.txt 4. find:用于在指定目录下递归地搜索文件和目录。它可以根据不同的条件进行搜索,并返回匹配的结果。 示例:假设我们要在当前目录下查找所有以.txt结尾的文件,可以使用以下命令: ``` find . -name "*.txt" ``` 输出结果可能是:./file1.txt ./file2.txt ./dir1/file3.txt 5. grep:用于在文件中搜索指定的模式。它可以根据正则表达式匹配文本,并返回匹配的行。 示例:假设我们要在文件file.txt中查找包含"hello"的行,可以使用以下命令: ``` grep "hello" file.txt ``` 输出结果可能是:This is a hello world example.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值