LINUX 搜索命令
1:whereis
whereis 是搜索系统命令的命令(像绕口令一样),也就是说,whereis 命令不能搜索普通文件.
而只能搜索系统命令。whereis 命令的基本信息如下。
命令名称:whereis。
英文原意:locate the binary, source, and manual page files for a command。
所在路径:/usr/bin/whereis。
执行权限:所有用户。
功能描述:查找二进制命令、源文件和帮助文档的命令。
2:which 命令
which 也是搜索系统命令的命令。和 whereis 命令的区别在于:
whereis 命令可以在查找到二进制命令的同时,查找到帮助文档的位置;
而 which 命令在查找到二进制命令的同时,如果这个命令有别名,则还可以找到别名命令。
which 命令的基本信息如下:
命令名称:which。
英文原意:shows the full path of (shell) commands。
所在路径:/usr/bin/which。
执行权限:所有用户。
功能描述:列出命令的所在路径。
3 :locate 命令
3.1 基本用法
locate 命令才是可以按照文件名搜索普通文件的命令。
优点:按照数据库搜索,搜索速度快,消耗资源小。数据库位置/var/lib/mlocate/mlocate.db,
可以使用 updatedb 命令强制更新数据库。
缺点:只能按照文件名来搜索文件,而不能执行更复杂的搜索,比如按照权限、大小、修改
时间等搜索文件。
locate 命令的基本信息如下。
命令名称:locate。
英文原意:find files by name。
所在路径:/usr/bin/locate。
执行权限:所有用户。
功能描述:按照文件名搜索文件。
Updatedb //强制更新数据库
4:find
功能描述:在目录中搜索文件。
4.1 按照文件名搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-name: 按照文件名搜索
-iname: 按照文件名搜索,不区分文件名大小写
-inum: 按照 inode 号搜索
4.2.按照文件大小搜索
find 搜索路径 [选项] 搜索内容
选项:-size [+|-]大小: 按照指定大小搜索文件
4.3 按照修改时间搜索
Linux 中的文件有访问时间(atime)、数据修改时间(mtime)、状态修改时间(ctime)这三个时间,我们也可以按照时间来搜索文件。
-atime [+|-]时间: 按照文件访问时间搜索
-mtime [+|-]时间: 按照文件数据修改时间搜索
-ctime [+|-]时间: 按照文件状态修改时间搜索
-5:代表 5 天内修改的文件。
5:代表前 5~6 天那一天修改的文件。
+5:代表 6 天前修改的文件。
4.4 按照权限搜索
-perm 权限模式: 查找文件权限刚好等于“权限模式”的文件
-perm -权限模式: 查找文件权限全部包含“权限模式”的文件
-perm +权限模式: 查找文件权限包含“权限模式”的任意一个权限的文件.
+444 只要有一个比4打就能查到
-444 所有的都要比4大
4.5 按照所有者和所属组搜索
find 搜索路径 [选项] 搜索内容
选项:
-uid 用户 ID: 按照用户 ID 查找所有者是指定 ID 的文件
-gid 组 ID: 按照用户组 ID 查找所属组是指定 ID 的文件
-user 用户名: 按照用户名查找所有者是指定用户的文件
-group 组名: 按照组名查找所属组是指定用户组的文件
-nouser: 查找没有所有者的文件
按照所有者和所属组搜索时,“-nouser”选项比较常用,主要用于查找垃圾文件。
4.6 按照文件类型搜索
-type d: 查找目录
-type f: 查找普通文件
-type l: 查找软链接文件
find . –type d
4.7 逻辑运算符
-a: and 逻辑与
-o: or 逻辑或
-not: not 逻辑非
(1)-a:and 逻辑与
find 命令也支持逻辑运算符选项,其中-a 代表逻辑与运算,也就是-a 的两个条件都成立,find 搜
索的结果才成立。举个例子:
[root@localhost ~]# find . -size +2k -a -type f
# 在当前目录下搜索大于 2KB ,并且文件类型是普通文件的文件
(2)-o:or 逻辑或
-o 选项代表逻辑或运算,也就是-o 的两个条件只要其中一个成立,find 命令就可以找到结果。例
如:
[root@localhost ~]# find . -name cangls -o -name bols
./cangls
./bols
# 在当前目录下搜索文件名要么是 cangls 的文件,要么是 bols 的文件
(3)-not:not 逻辑非
-not 是逻辑非,也就是取反的意思。举个例子:
[root@localhost ~]# find . -not -name cangls
# 在当前目录下搜索文件名不是 cangls 的文件
4.8 grep(正则表达式)
grep在文件中搜索字符串.
[root@localhost ~]# grep [选项] "搜索内容" 文件名
选项:-i: 忽略大小写
-n: 输出行号
-v: 反向查找
--color=auto: 搜索出的关键字用颜色显示
grep --color=auto EXEC con.sqx
4.9 find与grep的区别
find 也是搜索命令,那么 find 命令和 grep 命令有什么区别呢?
(1)find 命令
find 命令用于在系统中搜索符合条件的文件名,如果需要模糊查询,则使用通配符进行匹配,通配符
是完全匹配(find 命令可以通过-regex 选项,把匹配规则转为正则表达式规则,但是不建议如此)。
(2)grep 命令
grep 命令用于在文件中搜索符合条件的字符串,如果需要模糊查询,则使用正则表达式进行匹配,
正则表达式是包含匹配。
(3)通配符与正则表达式的区别
通配符:用于匹配文件名,完全匹配
通 配 符 作 用
? 匹配一个任意字符
* 匹配 0 个或任意多个任意字符,也就是可以匹配任何内容
[] 匹配中括号中任意一个字符。例如,[abc]代表一定匹配一个字符,或者是 a,或者是 b,或者是 c
[-] 匹配中括号中任意一个字符,-代表一个范围。例如,[a-z]代表匹配一个小写字母
[^] 逻辑非,表示匹配不是中括号内的一个字符。例如,[^0-9]代表匹配一个不是数字的字符
正则表达式:用于匹配字符串,包含匹配
正 则 符 作 用
? 匹配前一个字符重复 0 次,或 1 次(?是扩展正则,需要使用 egrep 命令)
* 匹配前一个字符重复 0 次,或任意多次
[] 匹配中括号中任意一个字符。例如,[abc]代表一定匹配一个字符,或者是 a,或者是 b,或者是 c
[-] 匹配中括号中任意一个字符,-代表一个范围。例如,[a-z]代表匹配一个小写字母
[^] 逻辑非,表示匹配不是中括号内的一个字符。例如,[^0-9]代表匹配一个不是数字的字符
^ 匹配行首
$ 匹配行尾
4.10 管道的用法 |
命令格式: 命令1 | 命令2
命令 1 的正确输出作为命令 2 的操作对象
find . –name “*.h”|xargs grep “abc”
find . –name “*.h” -> | 管道运算符查找结果为字符串放入,后面命令的缺失选项中。
[root@localhost ~]# ll -a /etc/ > /root/testfile
# 用输出重定向,把 ll 命令的输出保存到 /root/testfile 文件中
ll -a /etc/ | more 显示/etc下面所有文件 | more显示出来
4.11:网络状态命令
netstat [选项]
选项:
-a: 列出所有网络状态,包括 Socket 程序
-c 秒数: 指定每隔几秒刷新一次网络状态
-n: 使用 IP 地址和端口号显示,不使用域名与服务名
-p: 显示 PID 和程序名
-t: 显示使用 TCP 协议端口的连接状况
-u: 显示使用 UDP 协议端口的连接状况
-l: 仅显示监听状态的连接
-r: 显示路由表
netstat -an | grep "ESTABLISHED" | wc -l
统计网络连接的数量