Linux命令之文件搜索
locate 文件名
locate只能搜索文件名,不能搜索文件大小。搜索速度快。
locate并不会搜索到那些新加入的文件。新加入文件后,使用updatedb,更新数据库后,再使用locate搜索。
updatedb会遵循/etc/updatedb.conf中的规则来更新数据库。
[root@shizhan ~]# 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 fuse.sshfs 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 /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp"
yes表示遵循该规则:PRUNENAMES :不更新该文件后缀的文件。PRUNEPATHS :不更新这些目录下的文件。
所以,向/etc中新建一个文件cang,再更新搜索,也是搜索不到的。
whereis 搜索系统命令的位置,以及帮助文档。
which 搜索系统命令的位置,若有别名则显示别名。
[root@shizhan ~]# which ll
alias ll='ls -l --color=auto' //别名。。
/usr/bin/ls
系统命令会省略前面的路径,PATH 定义的就是系统搜索命令的路径 。
find [搜索范围] [搜索条件]
搜索范围:/ 全部 。。/root。。。
搜索条件: -name install.log 按名字搜索 这里还有通配符 。-name install.* 任意内容
-name ab? ?匹配一个字符
-name ab[cd] 匹配中括号中任意一个字符 即abc abd都行。
-iname install.log 按文件i节点查找
-user root 按所有者查询
-nouser 没有所属所有者的文件
-mtime +10 查找十天前修改的文件。
-10 十天内
10 10天当天
-atime 文件访问时间
-ctime 改变文件属性
-size 25k 大小为25k
+25k 大于25k
-25k 小鱼25k
M 大写,k小写。
-size +25k -a -size -50k 大于25k而且小于50k
-a and 与,都要满足
-o or 或 满足一个就行
-size +25k -a -size -50k -exec ls -lh {} \ ; 逗号也有
执行完前面以后,对前面所有结果执行后面操作。
grep [选项] 字符串 文件名 在文件中搜索符合要求的字符串
-v 不包含该字符串
-i 忽略大小写
[root@shizhan ~]# grep "first" anaconda-ks.cfg
# Run the Setup Agent on first boot
firstboot --enable
cat : 可以查看文件内容