查找命令
1、命令名称:which(查看命令文件位置和命令可能出现的别名)
命令所在路径:/usr/bin/which
在之前6.X的版本中,有内置命令和外部命令之分。内置命令在开机之后就加入内存当中, 常驻内存执行效率高。比如:cd、pwd、bg、jobs命令等,
在7.X版本之前都是内置命令,无法用which命令查找到这些命令的绝对路径。但在centos7.X的版本下是可以找到这些命令的绝对路径的。
2、whereis(查找命令及帮助文档所在位置)
命令路径:/usr/bin/whereis
①-b:定位指定命令的绝对路径
②-m:定位指定命令的帮助手册路径(即man帮助手册文档位置)
③-s:定位指定命令的源码文件路径
3、locate(按照文件名查找,按照数据库查找)
若没有此命令,则 yum -y install mlocate (安装命令,须联网)
命令所在路径:/usr/bin/locate
locate命令的使用实例:
locate /etc/sh 查找etc目录下sh开头的文件
-i:忽略查询对象的大小写
数据库文件:/var/lib/mlocate/mlocate.db
数据库更新 updatedb #建议每次查询前先更新下数据库(只有root可使用)
更新规则文件:/etc/updatedb.conf #配置文件中记录一些忽略不更新的文件类型和目录
在使用locate命令时,要使用绝对路径查询,相对路径则查询失败。
4、grep “字符串” 文件名(在文件内查找符合条件的字符串行)
命令所在路径:/bin/grep
例:grep -i "root" /etc/passwd
-v 反向选择
-i 忽略大小写
-E 支持筛选多个条目
5.命令名称:find(搜索系统中符合条件的文件) --速度慢于locate[从数据库查]
命令所在路径:/usr/bin/find
命令格式:find 目录 [-选项] 搜索内容
选项:
-name 根据文件名查找 find / -name 'a[0-9]' 查/目录下a0-a9文件
-size 根据大小查找
e.g. find / -size -10k /目录下查找小于10k的文件或目录
find / -size -10M /目录下查找小于10M的文件或目录
find / -size +10G /目录下查找大于10G的文件或目录
-user 根据所有者查找
e.g. find / -user root查找 /目录下所有root用户属性的文件
-perm 根据文件权限查找
e.g. find /boot -perm 644 查找/boot目录下权限为644的文件
-inum 根据文件i节点查询 [不加-则会显示不同分区同inode号的文件]
e.g. find / -inum 231906 -exec rm {} \;
有一些文件的硬链接数量有很多,有相同的i节点,查找其中的一个文件的i节点号,一次性删除。
按时间查找
按天 ctime atime mtime
按分钟 cmin amin mmin
c(change) 表示属性被修改过:所有者、所属组、权限
a(access) 被访问过(被查看过)
m(modify) 表示内容被修改过
e.g. find /etc -mmin -120 查找120分钟内内容被修改过的文件及目录
find /etc -ctime +7 查找七天之前属性被修改过的文件及目录
-type 根据文件类型查找
f 二进制文件(普通文件) l 链接文件 d 目录文件 (包含目录文件的上级目录)
-maxdepth --- 指定查找数据目录的最大深度
-mindepth --- 指定查找数据目录的最小深度
逻辑连接符
-a(and 逻辑与)
-o(or 逻辑或)
e.g. find /etc -size +1k -a -size -10k (在/etc目录小查找大于1k并且小于10k的文件及目录)
-exec 命令执行连接符(对合条件的文件进一步处理)
find ... -exec 命令 {} \;
{}表示find查询的结果集
\是转义符,不适用命令别名,直接使用命令本身
;分号是表示语句结束
注意:固定格式。注意中间空格。
转义符:在Linux中有个别名机制,如rm删除文件,执行的却是rm -i(用which rm 可 以查看命令别名)使用rm删除文件前会提示确认信息,就因为rm -i 这个参数。
如果想使用命令原意,可以在加\转义。如:\rm tese.txt 不会提示,直接删除。[输入命令的绝对路径同样执行命令本身]
扩展
①find ... -exec 命令 {} \;-exec 命令 {} \;可对数据连续处理
②find ... -exec cp(或mv) {} 目标目录 \; 剪切或复制时{}中的是源文件
③命令1 |xargs 命令2 相对单一的 | 可批量处理数据,但仍不能执行复制及剪切操作[源文件及目标文件的格式位置无法判定]
④|xargs:格式较简单,但不支持带空格的文件
e.g. find /etc/ -name "*.txt" |xargs rm
6.管道符 |
命令1 | 命令2 将命令1 的标准输出作为命令2的标准输入,无法对数据批量处理,如批量删除.
e.g. ls -l /dev/ | more 分屏显示/dev/下的ls -l 内容
7.xargs命令:|xargs
作用:将前一个命令的结果,作为后一个命令的参数(所有符合条件的文件逐个传递给后面的命令)
e.g.find /var/log/ -name "*.log" |xargs grep --color=auto da
注:find、locate、grep的对比
①find 和 locate 都是用来在系统内查询文件位置的命令; ②find 是通过对所有目录进行遍历的方式进行查找的,结果精准,但消耗大量系统资源和时间;
③locate 是通过实现创建数据库保存文件位置,再查询数据库的一种快速索引方式,节省资源速度快,但是精准度稍差;
④grep 是用来在指定文件内查询符合条件的关键词的命令,操作对象是指定某文件; ⑤find 默认情况下是精确匹配,可以使用通配符进行模糊匹配;
⑥grep 默认情况下是包含匹配,要想精确匹配需要使用正则表达式