在Linux中对文件或者对文件夹的搜索是十分频繁的操作,而搜索命令主要有四个:
1: locate命令
(1)命令格式: locate 文件名
例如:locate abc 表示:搜索文件名为abc的文件
(2)注意事项: 首先这个命令是对整个磁盘中的文件进行搜索,但是locate命令执行效率比find命令执行效率高,因为该命令会在/var/lib/mlocate/mlocate.db这个数据库中查找.但是该数据库不是实时更新的,一般是一天已更新,如果想要查找刚刚创建的文件,我们必须使用 sudo updatedb这个命令使该数据库强制更新,然后才能查找到我们刚刚创建的文件.
2: find命令
(1)命令格式: find 查找范围 查找条件类型 文件名称
例1:
find / -name abc 表示:根目录下按照文件名称查询,查询abc文件.
如果需要模糊查询,那么需要使用通配符.
通配符通常有三种:
* :表示任意内容
[] :表示括号内的任意字符
? :表示任意字符
注意:使用通配符的时候最好使用双引号括起来,防止系统不识别通配符
如: find / -name "ab[cd]" 表示: 搜索根目录下名为abc或者abd的文件.
例2:
find /var/log/ -mtime -10 表示: var目录下的log目录下的文件在十天内修改过的文件.
+10 :表示十天前修改过得文件.
-10 :表示十天内修改过的文件.
10 :表示十天当天修改过的文件.
atime :文件访问时间
ctime :文件属性改变的时间
mtime :文件内容修改过的时间
例3:
find /home/yhh/ -user yhh 表示:home目录下的yhh目录里属于yhh这个用户的文件.
find /home/yhh/ -nouser 表示:home目录下的yhh目录里的没有所有者的文件,一般只有u盘这样
的外来文件和sys目录下内核直接生成的文件没有所有者,其他文件都有所有者.
例4:
find . -size +100k 表示:搜索当前目录下文件大小超过100kb的文件或者目录.
find . -inum 284345 表示:搜索当前目录下文件i节点数为284345的文件.
find . -size +100k -a -size -200k 表示:大于100k小于200k的文件.
-a :与的关系
-o :或的关系
例5:
find . -size +50k -exec ls -l {} \; 表示:查找到的文件按照长格式显示
(2)注意事项: find命令虽然十分强大,但是非常耗费时间,耗费系统资源.所以查询文件时应该尽量缩小范围.
3: whereis与which命令
(1)whereis命令格式: whereis 命令名称
例如: whereis ls 表示: 搜索ls命令的位置
which命令格式: which 命令名称
例如: which ls 表示:搜索ls命令的位置
(2)注意事项: which命令除了可以查询命令的所在位置,而且可以显示出改名的别名;whereis命令除了可以显示命令的所在位置,而且可以显示文件的帮助文档所在位置;而命令一般都存放在/bin,/sbin,/usr/bin或者/usr/sbin下.
4:grep命令
(1)命令格式: grep [选项] 搜索字符 文件名称
例如: grep "abc" test 表示: 搜索文件test中包含abc字符的行.
选项包含一下两种:
-i: 表示忽略大小写.
-v: 表示不包含该字符的行.
(2)注意事项: grep命令用来搜索文件内容的,如果需要模糊查询,应该使用正则表达式.