Linux系统学习之文件搜索命令(4)
2017-07-04 本文已影响0人
小荷才
updatedb.conf配置文件
此文件的作用是配置搜索条件,locate、whereis、which搜索命令就是按照此配置文件搜索的。
vi /etc/updatedb.conf //打开updatedb.conf配置文件
updatedb.conf配置文件的内容:
//是否启用此配置文件,yes是生效,no是不生效
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"
locate命令
locate [文件名]
locate并不是直接在系统中搜索,而是在/var/lib/mlocate下存有一个数据库,它是在这个数据库中搜索的文件。
优点:搜索数据库的好处就是它不需要遍历整个系统,所以搜索速度很快。
缺点:mlocate数据库并不是实时更新的他的更新频率应该是一天一更新,所以你新创建的文件,用locate命令搜索不到,不过,locate提供了一个更新mlocate数据库的命令:
updatedb //更新mlocate数据
更新mlocate数据库后就可以搜索到新创建的文件了。
搜索命令的命令whereis、which
whereis:搜索命令所在路径已经帮助文件所在位置。
whereis [选项] [命令名]
选项:
-b:只查找可执行文件
-m:只查找帮助文档
which:搜索命令所在路径及别名。
which [命令名]
注:whereis、which不能找到Linux里面shell的内置命令,如cd。
find命令
Linux里面功能最强大的文件搜索命令,支持使用通配符匹配。
find [搜索范围] [搜索条件]
例如: find / -name install.log //搜索根目录选的名字叫做install.log的文件
注:使用find的时候避免大范围搜索,会非常耗费系统资源
find搜索条件
-name //按照文件名搜索
举例:find /root -name abc //查找root下面叫做abc的文件
-iname //不区分大小写
举例:同上
-user //按照所有者搜索
举例:find /root -user root //查找root下所有者为root用户的文件
-nouser //查找没有所有者的文件
举例:find /root -nouser //查找root下没有所有者的文件
-mtime //文件修改时间 +10就是十天前 10第十天当天 -10 十天内
举例:find /var/log -mtime -10 //查找var/log 下面在十天内修改过的文件
atime //文件访问时间
举例:同-mtime
ctime //改变文件属性
举例:同-mtime
-size //安装文件大小搜索 -25k是小于25k 25k是等于25k +25k是大于25k
举例:
find . -size 13k //搜索当前目录下文件大小是13k的文件
-inum //按照i节点搜索
举例:find . -inum 14866 //搜索当前目录下i节点是14866的文件
-a //and 逻辑与,两个条件都满足
举例:find . -size +1k -a -size -4k //搜索当前目录下文件大小大于1k并且小于4k的文件
-o //or 逻辑或,两个条件满足一个即可
举例:find . -size -3k -o -size +5k //搜索当前目录下文件大小小于3k或者大于5k的文件
-exec [命令] {} \; //对搜索结果执行的操作
举例:find . -size +2k -a -size -10k -exec ls -l {} \; //搜索当前目录下文件大小大于2k并且小于10k的文件,然后使用ls列出这些的内容,注只要使用了-exec 结尾就要加上{} \; 这是此命令的固定格式
举例:find /root -name abd -exec rm -rf {} \; //查找root目录下文件名称是abd的文件然后删除他
grep
grep是字符串搜索命令,在文件中匹配符合条件的字符串,它支持正则表达式匹配
grep [选项] 字符串 文件名
选项:
-i 忽略大小写
-v 排除指定字符串
举例:grep -i "size" anaconda-ks.cfg //在anaconda-ks.cfg文件里搜索包含size的内容不区分大小写
Linux 下可以使用的通配符:
注:find支持通配符匹配,grep支持正则表达式匹配
* 匹配任意字符
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符
举例:
find /root -name "*" //搜索root目录下所有内容
find /root -name "ab[cd]" //搜索root目录下名字叫做 abc 或者 abd的文件
find /root -name "?b" //搜索root目录下名字只有两个字符并且是b结尾的文件