艺赛旗 RPA9.0全新首发免费下载 点击下载
http://www.i-search.com.cn/index.html?from=line1
搜索命令
不管是 Windows 还是 Linux,尽量少用搜索,因为搜索会占用大量的资源,特别是服务器使用高峰时间段
搜索的条件越精准越好
搜索的范围越小越好
文件搜索命令 find
所在路径/bin/find
执行权限:所有用户
格式
find [搜索范围] [匹配条件]
搜索范围:
通常是一个目录
匹配条件(常用的):
-name [文件名]根据文件名搜索
只有文件名完全相同的文件才会被匹配,不会模糊搜索
要想实现模糊搜索,可以使用通配符*,可以匹配任意字符
find /etc -name init 搜索文件名包含 init 的文件
find /etc -name init搜索以init开头的文件
使用?可以匹配单个字符
find /etc -name init??? 匹配文件名为七字符个并且前面四个为 init 的文件
严格区分大小写!!
-iname 不区分大小写,其他的和-name相同
-size [+/-文件大小]根据文件大小筛选
文件大小单位是一个数据块,即 0.5K(512 字节),使这种方法的时候我们需要换算数据单位
1MB = 2048
- 文件大小 大于指定大小
查找大于 100MB 的文件find / -size +204800
- 文件大小 小于指定大小
当不加 [+/-] 的时候,表示搜索指定大小的文件,一般不用
-user [用户名] 根据文件所有者搜索文件
-cmin [+/- 时间大小], change,搜索指定时间范围内被修改文件属性的文件,默认单位为分钟
文件属性,就是 ls -l 看见的文件属性
+表示超过指定时间
-表示指定时间长度之内
-amin [+/- 时间大小],access,搜索指定时间范围内被访问的文件
访问时间
-mmin [+/- 时间大小],modify,搜索指定时间范围内修改文件内容的文件
-a,“and”, 用来链接条件,表示两个条件同时满足
find / -size +204800 -a -size -409600
-o,“or”, 用来链接条件,表示两个条件满足其中一个
-exec/ok 命令内容 {};对搜索结果执行 “命令内容” 中的操作
find /etc -user ziawang -exec ls -l {};使用ls -l查看指定目录下用户名为 ziawang 的文件或目录
{}表示 find 查找的结果
\表示转义符
;分号表示结束
-ok会有一个询问确认的步骤
-type 文件类型,文件类型有三种
f: 文件
d: 目录
l: 软连接文件
-inum根据文件的 inode 来查询
应用:如果文件的名称乱码,很难删除这个文件的情况下,使用inode删除文件
find . -inum 50505 -delete
注意
对于名称中包含有空格的文件或目录,如果直接用rm 文件名,这个命令会认为删除了两个文件,这样显然不行,有两种方式来解决这个问题
对文件名用双引号包含起来
rm “haha file”
使用 i 结点删除(每一个文件都必须有一个结点)
找到文件 i 结点ls -i
find / -inum 结点号 -exec rm {};
其他搜索命令
从文件资料库中查找文件 locate
类似 Windows 的一个软件 “everything”,这个命令建立了一个文件资料库,这个文件资料库会定时更新,查找时也是在文件资料库中查找,搜索速度非常快
使用locate locate可以找到这个文件资料库
这个文件资料库的路径/var/lib/mlocate/mlocate.db
对于一个新建立的文件。在没有更新到文件资料库的时候,使用locate是找不到的没使用find可以找到
手动更新资料库
updatedb命令可以更新资料库
注意,文件资料库有一个收录范围,如果我们的新创建的文件不在该收录的路径下,即使创建完文件使用了 updatedb 命令也找不到该文件,比如 /tmp 就不再文件资料库的收录范围内
所在路径:/usr/bin/locate
执行权限:所有用户
格式
locate [-i] 文件名
-i选项不区分大小写
搜索命令所在目录及别名信息 which
所在路径: /usr/bin/which
执行权限:所有用户
格式
which 命令名
搜索命令所在目录以及命令帮助文档的历经 whereis
使用 find 也可以查看命令所在路径,只是速度慢
所在路径:``
执行权限:所有用户
格式
whereis 命令名称
whereis passwd
使用whereis passwd命令的时候,会得到四条结果,如下
[root@host ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz
这是因为 Linux 系统系有一个名称位passwd的命令,又有一个passwd的配置文件。
/usr/share/man/man1/passwd.1.gz 这样以.1.gz结尾的文件对应的是命令的帮助文件路径
/usr/share/man/man5/passwd.5.gz 以.5.gz结尾的文件对应的则是配置文件对应的帮助文件的路径
因此当我们使用man passwd的时候,得到的将会是命令的帮助文档信息,如果你想要看passwd配置文件的帮助信息,可以这样
man 5 passwd
文件内搜索命令 grep
在文件中搜寻字符串匹配的行并输出
所在路径:/bin/grep
执行权限:所有用户
格式
grep [-iv] [关键词字符串] [文件]
-i不区分大小写
grep -i mysql /root/install.log
-v排除指定字符串
grep -v ^# /root/inittab把行首以注释#开头的行去掉,只看有效的行
grep -i -v e manage.py查看manage.py中不包含e或E的行
可以配合通配符^