目录
- 前言
- 一、which命令
- 二、find命令
前言
一、which命令
格式: which [选项] 命令|程序名 #默认当找到第一个目标后不再继续查找
选项 | 说明 |
---|---|
-a | 查找全部内容,而非第一个文件 |
-n | <文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。 |
-p | <文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。 |
- which 查找环境变量中的文件(PATH中配置的,
echo $PATH
查看,PATH中的路径是从左往右依次查找的); - 适用于查找外部命令,查找内部命令找不到对应程序。
- 能显示出文件所在路径、别名信息
二、find命令
find 表达式命令 查找当前和子目录下的 目录和文件;
格式:find 路径 -命令参数 [输出形式]
参数说明:
- 路径:告诉 find 去哪儿找你要的东西;
- 命令参数:参数很多下面会说到;
- 输出形式:输出形式很多,
-print,-printf,-print0,-exec,-ok,-ls
等
采用递归方式,根据目标的名称、类型、大小等不同属相进行精细查找。
查找类型 | 关键字 | 说明 |
---|---|---|
按名称查找 | -name | 根据目标文件的名称进行查找,允许使用 “*“ 及 ”?” 通配符 |
按文件大小查找 | -size | 根据文件的大小(不包含目录)进行查找。 一般使用 " + " 、 "- " 号设置超过或小于指定的文件大小作为查找条件。常用的容量单位包括: b(区块)、c(字节)、k(k是小写)(KB)、M(MB)、G(GB) |
按文件属性查找 | -user | 根据文件是否属于目标用户进行查找 |
按文件类型查找 | -type | 根据 文件的类型 进行查找。 文件的类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等。 |
表达式之间使用的逻辑运算符:
- -a 表示 而且(and)
- -o 表示 或者(or)
文件解释:
- 块设备文件(b):成块读取数据的设备(硬盘、内存、光驱)
- 字符设备文件(c):按单个字符读取数据的设备(键盘、鼠标)
练习:
find /boot -size +1024k #查找/boot 目录下 文件大小大于1024k的
find -name "a*" -a -size +2K #查找名字是a开头的,并大于2K的
find -name "*.img" -o -size +10M #查找名字是img结尾的,或者 大小大于10M的文件
-exec 选项: 在执行完 find 操作后,可以再执行其它命令操作,格式为 find find命令体 -exec 其他命令体 {} \;
(要以 \;
结尾)
-exec参数后面跟的是Linux命令,它是以分号 “ ; ” 为结束标志,由于各个系统中分号会有不同的意义,因此在分号前面加上反斜杠转义符 " \ ” 。
{} 代表前面 find 查找出来的文件名。
比如命令:find -size +20M -exec rm -rf {} \;
或者这样写 find -size +20M | xargs rm -rf;
,用来先查找出文件大于20M的,然后进行删除。实用性很好,在工作中经常能用到。
实例:
- 相当于先执行:
find -name "init*" -a -size +10M
- 再在上面的结果
{}
基础上,再执行:ls -l
,如果不加{},相当于单独执行了一次ls -l
命令。
#查找张三用户目录下,以txt结尾的文件,并进行删除。
find /home/zhang3 -name "*.txt" -a -type f -exec rm -rf {} \;