一、文件搜索命令
1.1 文件搜索命令locate
在后台数据库中按文件名搜索,只可以搜索文件名,搜索功能简单,但搜索速度快,命令格式为:
locate [文件名]
问题一:centOS系统找不到locate命令
locate: command not found
解决方法:
原因是系统中没有安装mlocate这个包。
* 第一步:安装mlocate包
yum -y install mlocate
会出现下面正在安装该包的信息,等待一会,直到出现Complete!就表示安装完成了。
* 第二步:更新数据库
updatedb
* 第三步:就可以使用locate命令了
[root@localhost ~]# locate install.log
/root/install.log
/root/install.log.syslog
问题二:当在某些目录下创建文件,然后更新数据库之后,并不能用locate命令查找到
原因是系统在更新数据库的配置文件中,设置了一些搜索限制,所以搜索不到,输入如下命令可以看到:
[root@localhost ~]# vi /etc/updatedb.conf
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fusectl gfs gfs2 gpfs 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 /net /sfs /tmp /udev /var/cache/ccache /var/spool/cups /var/spool/squid /var/tmp"
/etc/updatedb.comf配置文件
- PRUNE_BIND_MOUNTS = “yes” 表示开启搜索限制,如果为’no’则表示不开启搜索限制;
- PRUNEFS = 表示搜索时,不搜索的文件系统;
- PRUNENAMES = 表示搜索时,不搜索的文件类型;
- PRUNEPATHS = 表示搜索时,不搜索的路径;
不只locate命令遵循搜索限制,whereis与which也遵循
1.2 whereis与which命令
whereis与which命令是用来搜索命令的
whereis [命令]
查看命令所在的地址
1.3 find命令
find命令功能强大,而且搜索范围广,搜索速度相对较慢。一般都精确查找,只有加上通配符之后才能进行模糊查找。命令格式如下:
find [搜索范围][搜索条件]
[搜索条件]有如下几种:
1. 举例
find /home/ -name test
查找名为’test’的文件文件或目录
- -name 文件或目录名称
名称中可以使用通配符
* * 匹配任意内容
* ? 匹配任意一个字符
* [] 匹配任意一个中括号内的字符
2. 举例:
find /var/log/ -mtime +10
表示查找10天前修改的文件
- -atime 文件访问时间
- -ctime 改变文件属性
- -mtime 修改文件内容
其中:
* -10 10天内修改的文件
* 10 10天当天修改的文件
* +10 10天前修改的文件
3. 举例
find . -size 25k
查找所有文件大小为25KB的文件
- -25k 小于25KB的文件
- 25k 等于25KB的文件
- +25k 大于25KB的文件
4. 举例
find . -inum 255673
查找i节点是255673的文件
5. 举例
find /etc -size +20k -a -size -50k
查找/etc目录下大于20K并且小于50K的文件或者目录
- -a 逻辑与,两个条件都满足
- -r 逻辑或,两个条件满足一个即可
6. 举例
find /etc -size +20k -a -size -50k -exec ls -l {} \
查找/etc目录下大于20K并且小于50K的文件或者目录,并且显示文件的详细信息
- -exec ** {} \ 表示对搜索结果执行相应的操作;
7. 举例
find /root -iname install.log
文件名称不区分大小写;
8. 举例
find /root -user root
查找所有者为root的文件
9. 举例
find /root -nouser
查找没有所有者的文件
1.4 grep命令
指在文件中匹配符合条件的字符串,格式如下:
grep [选项] 字符串 文件名
[选项]:
* -i 忽略大小写
* -v 排除指定字符串
[root@localhost ~]# cat /home/zixuan/learn/test.hard
this is a test file;
111111
111111
those are there
[root@localhost ~]# grep "th" /home/zixuan/learn/test.hard
this is a test file;
those are there
[root@localhost ~]# grep -v "th" /home/zixuan/learn/test.hard
111111
111111
find命令与grep命令的区别
- find命令:在系统当中搜索符合条件的文件名,如果需要匹配使用通配符匹配,并且通配符是完全匹配;
- grep命令:在文件当中搜索符合条件的字符串,如果需要匹配使用正则表示式进行匹配,并且正则表达式是包含匹配;