文件搜索命令:locate
locate 文件名
(优点:在后台数据库中按文件名搜索,搜索速度更快 缺点:只能按文件名搜索)
并不是在系统里搜索,而是在/var/lib/mlocate这个目录下进行搜索,这是locate命令所搜索的后台数据库,但是这个数据库不是实时更新的,一天一更新
执行updatedb强制更新数据库,假设在不同的目录创建相同名字的文件或者目录,有可能不能搜索全部出来,原因是因为updatedb.conf配置文件中有些目录是locate不会进行搜索的
Prune_BIND_MOUNTS=”yes” 开启搜索限制
PRUNEFS= 搜索时,不搜索的文件系统
PRUNENAMES= 搜索时,不搜索的文件类型
PRUNEPATHS= 搜索时,不搜索的路径
命令的搜索命令:whereis与which
1.命令:whereis [命令名](搜索系统命令所在路径以及帮助文档所在位置)
选项:
-b:只查找可执行文件
-m:只查找帮助文件
例:搜索ls命令,命令:whereis ls。如果输入“whereis -b ls”,只会显示红字。如果输入“whereis -m ls”,则只会显示黄字。
ls: /bin/ls /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz
2.命令:which [命令名](搜索系统命令所在路径和查看到命令的别名)
注意:whereis和which不能搜索shell(当前系统界面叫做shell)的默认命令(如:cd),只能搜索外部安装的命令。
3.环境变量$PATH:定义系统搜索命令的路径。whereis和which搜索命令的路径是依赖PATH所定义的路径。Linux执行命令的时候都要在path定义的目录中去寻找。
系统命令不需要打绝对路径,如:ls这样的命令就可以不用加路径(/bin/ls)执行。如果是自己写的脚本或者自己写的程序,就需要打绝对路径,或者在$PATH中设置。
命令:echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
文件搜索命令:find
1.搜索文件命令:find [搜索范围] [搜索条件]
特点:非常强大,但耗费系统资源,卡慢,因此需避免大范围的搜索。
例:find / -name install.log
注意:find搜索默认是完全匹配,如果需要匹配,需使用通配符匹配。
2.Linux中的通配符
*:匹配任意内容
?:匹配任意一个字符
[]:匹配任意一个中括号内的字符。
例:find /root -name "install*",即搜索文件名以install开头的文件。
find /root -name "ab[cd]",即搜索文件名abc和abd的文件。
find /root -name "*[cd]",即搜索文件名以c结尾或以d结尾的文件。
3.其他命令选项
find /root -iname install.log:不区分“install.log”的大小写。
find /root -user install.log:按照所有者搜索。
find /root -nouser install.log:查找没有所有者的文件。对于Linux来讲,所有的文件都应该有所有者,但如果是内核产生的文件,如proc和sys文件夹,有可能没有所有者,以及外来文件,如插入的U盘。
find /root -mtime +10:查找10天前修改的文件。
find /root -mtime -10:10天内修改的文件。
find /root -mtime 10:10天当天修改的文件。
find /root -mtime +10:10天前修改的文件。
find /root -size 25k:查找文件大小为25kb的文件。
find /root -size -25k:查找文件大小小于25KB的文件。
find /root -size +25k:查找文件大小大于25KB的文件。
注意:k要小写,M要大写。如果不写单位:find /root -size 25,即以数据块(扇区)为单位。
find /root -inum 262422:查找i节点是252422的文件。
find /root -size +20k -a -size -50k:查找/root目录下,大于20KB并且小于50KB的文件。
选项:
-a :and 逻辑与,两个条件都满足。
-o :or 逻辑或,两个条件满足一个即可。
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
查找/etc目录下,大于20KB并且小于50KB的文件,并显示详细信息。
find /root -inum 262421 -exec rm -rf {} \;
查找/root目录下,i节点为262421的文件,并进行删除。
选项:
-exec [命令] {} \;:固定格式,对搜索结果执行操作。
字符串搜索命令:grep
grep [选项] 字符串 文件名(在文件当中匹配符合条件的字符串)
选项:
-i:忽略大小写
-v:排除制定字符串
例:grep "size" anaconda-ks.cfg,即搜索anaconda-ks.cfg文件中包含“size”的内容。
2.find命令与grep命令的区别
find:在系统中搜索符合条件的文件名,使用 通配符(完全)匹配。
grep:在文件当中搜索符合条件的字符串,使用 正则表达式 (包含)匹配。