>[success] # 文件查找 -- find
1. **find** -- 用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名,`find 起始路径 -name "被查找文件"`(如下图和window 查找文件顺序很像)
![](https://img.kancloud.cn/ac/07/ac0701c44d55213de7bb79525163aace_864x116.png)
2. 如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。
并且将查找到的子目录和文件全部进行显示。(**如下图 find 查找了当前的所有文件和目录,并且包括子目录和文件**)
![](https://img.kancloud.cn/6e/ad/6eadc65b4f5d40a38ec7be507b173ce8_721x446.png)
3. **find命令** 可进行的查找如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。也就是说可以**用于搜索机器上所有的资料,按照文件名字搜索,linux一切皆文件**
>[info] ## 参数
`find [搜索范围] [搜索条件] ` # find path [options]
* 举例子`find . -maxdepth 1 -name "a"` 找到当前目录 深度为1层 名为a 的
![](https://img.kancloud.cn/9f/48/9f48377eed48f4cb39c24ea3a7056193_500x82.png)
~~~
pathname 命令所查找的目录路径
'options 模块'
-depth 从指定目录下最深层的子目录开始查找
-maxdepth levels 查找的最大目录级数,levels为自然数
-regextype type 改变正则表达式的模式,默认为emacs
'tests 模块'
-mtime [-n|n|+n] 按照文件的修改时间来查找文件(-n 文件更改距离现在n天以内,+n表示文件更改时间距离现在n天以前,n是距离现在第n天)
-atime [-n|n|+n] 按照文件的访问时间来查找文件
-ctime [-n|n|+n] 按照文件的状态改变时间来查找文件
-amin 按照文件的访问时间来查文件,单位为分钟
-cmin 按照文件的状态时间改变来查找文件,单位为分钟
-mmin 按照文件的状态修改时间来查找文件,单位为分钟
-group 按照文件属主来查找文件
-name 按照文件名来查找文件,只支持*,?,[]等特殊通配符
-newer 查找更改时间比指定文件新的文件
-nogroup 查找没有有效用户组的文件,即/etc/group中不存在
-nouser 查找没有有效属主的文件,即/etc/passwd中不存在
-path pattern 指定路径样式
-perm 按照文件权限来查找文件
-regex 按照正则表达式
-iregex 接正则表达式,不区分大小写
-size n[cwbkmg] 查找文件长度为n块的文件
-user 按照文件属主来查找文件
'-type 模块'
b 块设备
c 字符设备
d 目录
p 管道文件
l 符号链接文件
f 普通文件
s socket文件
D door
'actions模块'
-delete 将查找出的文件删除
-exec 对匹配的文件执行该参数所给出的shell命令
-ok 和-exec作用相同,但在执行每个命令之前,都会让用户先确定
-prune 使用这一选项可以使find命令不在当前指定目录中查找
-print 将匹配的文件输出到标准输出
! 取反
-a 取交集
-o 取并集
~~~
>[danger] ##### 按名称搜索
* `find / -name 11.txt` 搜索根目录下 `name `是`11.txt` 的文件 避免大范围的搜索,会非常消耗系统资源
* `find /etc -name yum.conf` 在/etc目录下文件yum.conf
* `find . -name 'yum\*' ` 表示当前目录下查找文件名开头是字符串`yum`的文件
>[danger] ##### 通配符
1. `find`是在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
~~~
* 匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符
~~~
2. `find . -name "ab[cdef].txt"`查找当前文件夹下 文件名是 符合`ab[cdef].txt`规则的文件
>[danger] ##### -i -- 不区分大小写
`find . -iname "Ab[cdef].txt"`
>[danger] ##### -user -- 按所有者进行搜索
`find /root -user root` 在root目录下查找用户所有者是root
`find /root -nouser` 无用户所有者
>[danger] ##### -mtime -- 按时间搜索
`find . -mtime +5` ,`+、- `表示大于和小于
| 参数 | 含义 |
| --- | --- |
| atime | 文件访问时间 |
| ctime | 改变文件属性 |
| mtime | 修改文件内容 |
| 参数 | 含义 |
| --- | --- |
| \-5 | 5天内修改的文件 |
| 5 | 5天前当前修改的文件 |
| +5 | 5天前修改的文件 |
>[danger] ##### -size -- 按大小搜索
`find . -size +0k` 注意 k小写,M大写,`+、- `表示大于和小于,`kMG`表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
| 参数 | 含义 |
| --- | --- |
| \-8k | 小于8K |
| 8k | 等于8K |
| +8k | 大于8K |
| +8M | 小于8M |
* 使用条件参数
1. 参数有: **!,-and(-),-or(-o)**
~~~
(1)find /tmp -size +10c -and -mtime +2 #在/tmp目录下查找大于10字节并在2天前修改的文
件
(2)find / -user root -or -user susan #在/目录下查找用户是root或者susan用户的文件
(3)find /tmp ! -user susan #在/tmp目录中查找所有不属于susan用户的文件
~~~
>[danger] ##### 常用文件特征查找
~~~
(1)find / -atime -2 # 查找在系统中最后48小时访问的文件 (Access Time,文件读取访问时
间)
(2)find / -empty # 查找在系统中为空的文件或者文件夹
(3)find / -group susan # 查找在系统中属于group为susan的文件
(4)find / -mtime -1 #查找在系统中最后24小时里修改过的文件 (modify time)
(5)find / -user susan #查找在系统中属于susan这个用户的文件
(6)find / -size +10000c #查找出大于10000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
(7)find / -size -1000k #查找出小于1000KB的文件
~~~
>[danger] ##### 简单使用的语法
~~~
1.'find [你要从哪找] -type [文件类型] -size [文件内容大小] -name [内容名字是什么]'
1.1.-type f 是找普通文本文件 / d 是找 文件夹 类型
2.'find / -name "\*.txt' -- 在系统上 全局搜索,所有的.txt文件
3.'find /etc -type f -name "ifcfg\*" ' -- etc目录下网卡名字是以ifcfg开头的 ,文本类型文件
5.'find . -type f -name "python\*" ' -- 找出当前目录下所有的pyton 名字相关文件(f)内容
6.'find / -size +10M -name "\*.txt"' -- 全局搜索,超过10M大小的 txt文本
~~~
>[danger] ##### 案例
~~~
1.'find / -maxdepth 3 - type f -atime 7 -delete ' -- 恰好在7天内被访问过的文件删除
2.'find /tmp -size +10k -a -size -20k'-- 查找/etc目录下,大于10KB并且小于20KB的文件
3.find /tmp -size +10k -a -size -20k -exec ls -lh {} \;
exec 对上个命令的结果进行操作
-a and 逻辑与,两个条件都满足
-o or 逻辑或,两个条件满足一个就可以
~~~
- 安装-VMware 虚拟机
- 远程连接
- Windows -- wsl
- Linux -- 认识 Linux 和操作系统
- Linux -- Linux 和 windows 对比
- Linux -- 命令提示符
- Linux -- 文件目录
- Linux -- 文件类型
- Linux -- 绝对和相对路径
- Linux -- 常用快捷键
- Linux -- 三种帮助命令
- 帮助命令 -- man
- 帮助命令 -- help
- 帮助命令 -- info
- Linux -- 指令
- alias -- 设置别名
- history -- 查看历史命令
- cd -- 更改目录(切换文件夹)
- pwd -- 打印目录
- ls -- 列出文件内容
- mkdir -- 创建文件夹
- rmdir -- 删除一个空的目录
- touch -- 创建普通文件/修改时间
- cp -- 复制粘贴
- mv -- 移动和重名
- rm -- 删除
- cat/tac -- 查看纯文本文件
- more/less -- 分页读取信息
- head -- 从文本开头查看
- tail -- 从文本结尾查看
- cut -- 提取片段
- sort -- 排序
- uniq -- 去重
- wc -- 统计文件的行数、单词、字节数
- tr -- 替换、缩减或删除字符
- find -- 文件查找
- grep -- 文件当中匹配字符
- 管道 -- |
- locate -- 第三方文件查找
- whereis -- 查找二进制/源代码文件 路径
- which -- 查找环境变量
- 压缩和解压
- ln -- 链接
- wget -- 下载指定的url资源
- 重定向 -- << /< />/> >
- 逻辑控制 -- &&
- echo -- 输出指定内容
- date/cal -- 查看日期和日历
- Linux -- 进程管理
- Linux-- ps 指令
- vi/vim - 文本编辑器
- 更多
- Linux-- 开关机命令
- Liunx -- 退出登录
- Linux-- 查看登录用户信息
- Linux -- 环境变量
- Linux -- 用户
- Linux -- 文件管理
- 文件权限设置 -- chmod
- 更改文件的拥有者 -- chown
- 默认权限 -- umask
- Linux -- 用户
- 新建/删除用户 -- useradd/userdel
- 修改用户属性 -- usermod/chage
- 新建/删除用户组 -- groupadd/groupdel
- 用户切换 -- su/sudo
- 用户/用户组的配置文件
- 用户家目录被删除解决
- last、 lastlog命令查看用户详细的登录信息
- Linux -- shell
- Linux -- 管道符号
- shell -- 执行
- shell -- 变量
- shell -- 字符串
- shell -- 数组
- Shell -- declare 设置变量属性
- shell -- 数学计算
- shell -- 变量作用域
- shell -- 位置参数变量
- shell -- read
- shell - if 语句
- shell -- test
- shell -- case
- Linux -- 循环
- Linux -- 软件包管理