查询相关命令
1.which:
- 功能描述:显示命令的绝对路径
- 命令格式:which [commands]
2.whereis:
- 功能描述:显示命令的绝对路径、帮助手册路径、命令的源码文件路径。
- 命令格式:whereis [commands]
- 常用选项:
- -b:定位指定命令的绝对路径
- -m:定位指定命令的帮助手册路径(即man帮助手册文档位置)
- -s:定位指定命令的源码文件路径
3.locate:
- 功能描述:通过文件名进行文件位置查询 {locate命令进行文件查询并不是使用遍历的方式进行查找,而是事先创建好一个数据库,将所有文件的名称和对应路径保存在了其中,当查询文件时,只需要对数据库查询即可,速度上来说更迅速}
- 格式:locate + 关键字(会尽可能搜索出所有带关键词的文件)
- 数据库文件:/var/lib/mlocate/mlocate.db
- 数据库更新:updatedb
建议每次查询前先更新下数据库 - 更新规则文件:/etc/updatedb.conf
配置文件中记录了一些忽略不更新的文件类型和目录。
查询方式:
- 数据库方式查询:
在已经创建好的数据库内查询(不一定准确,因为数据库可能不是最新版) - 遍历式查询:
所有目录,每一个文件都去查看,是否符合查询条件(结果100%准确,查询相对较慢)
4.find
- 功能描述:与locate功能一样,但find不是通过数据库查,而是使用遍历查询。
find遍历式查询:挨个将每一个文件查看,确定其是否符合条件。 - 格式:
find + 查询位置 + 条件
按照文件名:
默认精准查询,若模糊查询需使用通用匹配符号(通配符)。
通配符号:
- *:代表任意长度的任意字符(包括空,即没有)
- ?:代表一个任意字符(长度为一)
- []:每个中括号只能代表一个字符,而字符范围取决于括号内指定的范围。
- [a-z]:字符范围a-z
- [a,x,v]:字符中有a、o、v的
- [^a]:逻辑非,取反,即除了括号中内容。匹配指定范围内某一个字符
-name选项后的关键词必须使用双引号
$ find /etc -name "*.txt"
按照大小:
$ find /etc -size +5M
$ find /etc -size -5M
$ find /etc -size +3M -a -size -5M
# -a 要求两个条件同时生效(and)
按归属查询:
# 查询文件所有者是指定用户的文件
$ find / -user laow
# 查询文件所有者是指定组的文件
$ find / -group laow
# 无效文件查询:
# 查询文件没有所有者的文件
$ find / -nouser
# 查询文件没有所属组的文件
$ find / -nogroup
将用户删除后,被删除用户之前创造的文件就会没有所有者、所属组。
按权限查询:
$ find /etc -perm 777
按类型查询:
$ find /etc -type f/d/l/b......
# 查询系统内权限过大的普通文件
$ find / -perm 777 -a -type f
根据inode号查询:
$ find / -inum + inode号
若根据同一个inode号查询出多个文件,则多个文件之间互为硬链接。
根据时间查询:
- 按文件访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
- 按内容修改时间(-mtime/天,-mmin/分钟):文件最后一次内容修改时间。
- 按属性修改时间(-ctime/天,-cmin/分钟):文件数据元(权限等)的最后一次修改时间。
- -N:N天内或N分钟内访问过的文件
- N:恰好在第N天或第N分钟访问过的文件
- +N:N天前或N分钟前被访问过的文件
# 查询根下的etc下,在9小时内被修改过文件内容的文件。
$ find /etc -mmin -540
多条件同时查询:
# 查询根下权限为777且文件类型是普通类型的文件。
$ find / -perm 777 -a -type f
# 查询根下的etc下的普通文件并且大小小于1MB或者大于5MB。
$ find /etc -type f -a -size -1M -o -size +5M
- -a:and的意思,将两个或两个以上的查询条件结合在一起进行文件查询(必须同 时符合所有条件)
- -o:or的意思,多个条件结合后,其中一条条件符合就算符合查询要求,然后列出
将find查询到的结果二次处理
命令连接符
方法一:-exec
# 将查询到的符合条件的文件用-exec转交给命令2进行处理。
$ find + 查询位置 + 查询条件 + -exec + 命令2 + 选项 + {} + \;
$ find /root -name "*.txt" -exec ls -l {} \;
- {} 保存了find命令的结果
- \ 当命令前有反斜杠时。执行的是命令本意,而不是命令的别名(取消了命令的别名)
这里虽然出现在后面,但是作用一样。 - ; 命令结束符号
补充:-ok可以替换-exec,作用是每一次命令2的执行都会询问。
方法二:独立的命令连接方式 |xargs
# find每查询到符合条件的文件,就立刻传给xargs后的命令2上。
$ find + 查询位置 + 查询条件 + | xargs + 命令2
拓展:
- 管道符“|”:将前一个命令的执行的结果,作为后一个命令的执行对象。
# 分页显示etc目录下所有文件的长格式信息
$ ls -l /etc | more
# 分页显示etc目录下每一个文件的内容(依次显示)
$ ls -l /etc | xargs more
5.grep:查询文件内的关键词
选项:
- -i:查询时忽略大小写
- -n:列出查询到的信息时,标注它在自己文件中的行号。
- -v:查询时将条件反转,即查询不包含xx的文件。
- –color=auto:将符合条件对象高亮显示。
grep别名为grep --color=aotu。CentOS6中没有别名,需要手动添加。
组合使用:
- 格式1:
# 将指定文件中包含关键词的行列出
$ grep + “关键词” + 文件名
- 格式2:
# 命令|grep “关键词”
# 将etc目录下普通文件以长格式列出后,查询其中带有rwx的文件并显示出来。
$ find /etc -type f|xargs ls -l | grep "rwx"
# 将etc目录下所有文件以长格式列出后,查询其中带有rwx的文件并显示出来。
$ ls -l /etc | grep "rwx"
#查看是否开放了80端口。
$ netstat -antp | grep ":80"