Linux搜索命令

2019-10-27  本文已影响0人  黑曼巴yk

文件搜索locate

# 代表本配置文件的刷选规则生效
PRUNE_BIND_MOUNTS = "yes"
# 不刷选下面这些文件系统(linux为ext2,ext3,ext4)
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 fuse.glusterfs ceph fuse.ceph"
# 不搜索包含下面关键字的文件
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 /var/lib/ceph"

命令的搜索命令

$ whereis ls
> /bin/ls
$ which ls
> ls: aliased to ls -G
➜  aliFE echo $PATH
> /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/MacOS:/Library/apache-maven-3.5.3/bin:/usr/local/mysql/bin

find

相比之前的locate,whereis,which,find命令非常强大。但是带来的结果是使用起来比较复杂,因为是做全文搜索,所以搜索的速度比较慢,而且耗费资源,如果是线上的环境,可能造成线上服务宕机。
使用方式为: find [搜索范围] [搜索条件]

-name 搜索某个文件
find / -name proxy.sh

这段话的含义是搜索根路径/下的名称为proxy.sh的文件。

模糊匹配

如果我们想要进行模糊搜索,需要使用通配符

* 匹配任意字符
? 匹配一个字符
[] 匹配任意一个中括号内的字符
# 需要使用引号括起来
[root@iZbp1ge7stkcnj5044oa81Z ~]# find ./ -name proxy*
> find: paths must precede expression: proxy.sh2

[root@iZbp1ge7stkcnj5044oa81Z ~]# find ./ -name 'proxy*'
./proxy.sh
./proxy.sh2
[root@iZbp1ge7stkcnj5044oa81Z ~]# find ./ -name '[a-z].sh'
./a.sh
./b.sh
按照时间搜索
find /root -iname proxy.sh
find /root-mtime +10

-10 代表10天内修改的文件
10 代表第10天前当天修改的文件
+10 代表10天之前修改的文件

按照文件大小搜索
find ./ size 25k

-25k 小于25k
+25k 大于25k
+25M 大于25M
-25M 小于25M

逻辑命令

-a and 逻辑与, 两个条件都满足
-o or 逻辑或, 两个条件满足一个即可

# 找出 当前文件 大于5k小于25k的文件
find ./ -size +5k -a -size -25k
-exec

find命令一般查找出来不仅仅是看看而已,还需要进一步操作,这时候exec作用就显示出来了
-exec参数后面跟的是command命令,它的意义是以;为结束标志的。考虑到;在不同系统有不同意义,所以前面加上\

# 代表前面查找出的文件, 使用后面的命令进行处理
find ./ -size +5k -a -size -25k -exec ls -lh {} \;
其他

grep

搜索字符串的命令。格式为grep[选项] 字符串 文件名

[root@iZbp1ge7stkcnj5044oa81Z ~]# grep "echo" proxy.sh
echo 'hello dankun'
echo "===== restart squid ====="
grep和find区别
上一篇下一篇

猜你喜欢

热点阅读