1、 locate:按照文件名搜索文件
locate filename
与find在整个操作系统中遍历搜索不同,locate命令在/var/lib/mlocate这个后台数据库中按照文件名搜索,所以优点是搜索速度很快。
然而由于数据库是一天更新一次,所以新建的文件很可能搜索不到,为了避免这个问题,可以强制更新数据库:updatedb
Locate的缺点是只能用文件名搜索,而且由于Locate的搜索是根据/etc/updatedb.conf文件中的规则进行搜索的,所以可能会存在某些文件或者某些文件夹或者符合某些规则的文件不会被搜索到的情况,具体参考前述文件中规定的规则(whereis和which也遵守这个规则)。
2、 whereis和which:搜索命令的命令
whereis [options] name
whereis只能搜索系统命令,不能搜索我们自主创建的文件,比如搜索 ls,touch等系统命令所在位置
–b 只查找可执行文件
-m 只查找帮助文件
有的命令是找不到命令所在位置的,比如cd,这是shell命令,用whereis和which是找不到的。
Which除了能找到命令所在位置外,还能查到命令的别名,但是不是每个命令都有别名,所以有的就只能看到命令所在位置
3、 find:非常强大,参数多
find [搜索范围] [搜索条件]
e.g: find / -name filename 搜索范围为根目录,按照name搜索文件filename
find搜索应该避免大范围搜索浪费资源,而且find是全匹配搜索,只有文件名完全一样才会被搜到,如果想搜索带有关键字的,那需要通配符。Linux中的通配符有* ? []
常用搜索条件有:
-name 按照名字搜索
-iname 不区分大小写
-user 按照所有者搜索(后接所有者名称)
-nouser 搜索没有所有者的,一般而言没有所有者的文件是垃圾文件可以删除,但是除了
a .sys文件夹和proc文件夹中的无用户文件,这两个文件中的无用户文件是内核直接产生的
b.外来文件,比如U盘移动硬盘等的文件
-mtime,atime,ctime
find /root –mtime +10
-10: 10天内修改文件
10:10天当天修改文件
+10:10天前修改的文件
atime:文件访问时间
ctime:改变文件属性
mtime:修改文件内容
-size 按照文件大小搜索
Find / -size +25k,千字节必须是小写k,兆字节必须大写M,不带单位则单位为扇区数
-25k 小于25k
25k 等于25k
+25k 大于25k
-inum 按照inode搜索
组合搜索:
-a 逻辑与 find /etc –size +20k –a –size -30k
-o 逻辑或 用法与-a相同
-exec 接在find搜索命令之后表示find的结果送给exec后面的命令执行。比如:
Find /root –size 20k -exec rm –rf {}\; 在root中找到大小为20k的文件并删除
此时第二个命令后面必须要有{}\;
4、 grep:搜索字符串命令,在指定文件中搜索指定字符串
grep “size” filename在filename中查找包含“size”的语句
grep –v “size” filename 取反,不包含“size”的语句