find:主要要进行文件搜索
基本语法
find [
文件路径
] [
选项 选项的值
]
-name *
-type f|d
常见的选项
-name
根据文件的名称搜索文件,支持通配符
*
-type f
代表普通文件,
d
代表目录
例,找到
httpd.conf
文件
![](https://i-blog.csdnimg.cn/direct/75143919b70d48eb807644a6ad6007a4.png)
在
linux
系统中,如果要查找的文件的名称不清晰,可以使用部分文件名
+*
搜索
例 获取
/etc/
中以
.conf
结尾的文件
![](https://i-blog.csdnimg.cn/direct/7d363a536a684a98bbb196367fcd487f.png)
例 搜索以
http
开头的文件
![](https://i-blog.csdnimg.cn/direct/d63480b2305647ce85c085f2b6d6dfa6.png)
.
文件的时间的概念
window
中的时间
1.
创建时间
2.
修改时间
3.
访问时间
使用
stat
命令获取文件的时间信息
语法
stat
文件
![](https://i-blog.csdnimg.cn/direct/c6268613cb9149f4a5780ccf21d0b48f.png)
例创建文件,并
p
配置文件的修改时间
语法
touch -m -d
日期时间格式 文件名称
文件不存在就创建并修改时间
文件存在只配置最后修改时间
#
修改或者创建文件,并设置最后修改时间
[root@localhost ~]# touch -m -d "2020-7-7 00:00" /opt/abc.txt
[root@localhost ~]# ll /opt/
总用量
44
-rw-r--r--. 1 root root 17992 6
月
17 13:58 1.png
-rw-r--r--. 1 root root 17503 6
月
17 14:02 2.png
-rw-r--r--. 1 root root 0 7
月
7 2020 abc.txt
-rw-r--r--. 1 root root 23 7
月
14 13:28 test.conf
[root@localhost ~]# stat /opt/abc.txt
文件:
"/opt/abc.txt"
大小:
0
块:
0 IO
块:
4096
普通空文件
设备:
fd00h/64768d
Inode
:
33680845
硬链接:
1
权限:
(0644/-rw-r--r--) Uid
:
( 0/ root) Gid
:
( 0/ root)
环境:
unconfined_u:object_r:usr_t:s0
最近访问:
2024-07-14 13:36:38.418740506 +0800
最近更改:
2020-07-07 00:00:00.000000000 +0800
最近改动:
2024-07-14 13:36:38.418740506 +0800
创建时间:
-
![](https://i-blog.csdnimg.cn/direct/13d0e8f88bb24b97a221509bb3721c61.png)
创建第三个文件
![](https://i-blog.csdnimg.cn/direct/7a85549a343b4848b1ec42179a0969ba.png)
![](https://i-blog.csdnimg.cn/direct/81663d091dca43069fa34179d86df542.png)
查看四个文件
![](https://i-blog.csdnimg.cn/direct/be490013ea284b78a92ec6c117c1ec12.png)
通过文件的最后修改时间搜索文件
语法
find 文件路径 -mtime +days/-days
-mtime 根据文件最后修改时间搜索文件
+号 搜索几天之前的文件信息
-号 搜索几天之内的文件信息
语法
find 文件路径 -mtime +days/-days
-mtime 根据文件最后修改时间搜索文件
+号 搜索几天之前的文件信息
-号 搜索几天之内的文件信息
案例:删除系统
/var/log/ 10
天之前的日志,格式都是
.log
文件
方法
1
报错,
rm
不支持这种写法
![](https://i-blog.csdnimg.cn/direct/d78ba581cb604e39a58d7e14911dd4c7.png)
方法
2 rm
和
ls
不支持管道
![](https://i-blog.csdnimg.cn/direct/935c307cd7444691b1c4f6d38d4e145d.png)
方法
3
使用
xargs
将查询结果交给
rm
,可行
![](https://i-blog.csdnimg.cn/direct/a4253c08638441529a2dc30615cde99e.png)
方法
4
使用
find
执行
-exec
语法
find
文件路径
#
查看目录中的
txt
文件
[root@localhost opt]# ls -l *.txt
#
没有
e.txt
文件,在前面被删除了
-rw-r--r--. 1 root root 0 7
月
14 13:54 a.txt
-rw-r--r--. 1 root root 0 7
月
13 00:00 b.txt
-rw-r--r--. 1 root root 0 7
月
12 00:00 c.txt
-rw-r--r--. 1 root root 0 7
月
11 00:00 d.txt
#
创建文件并且指定文件修改日期
[root@localhost opt]# touch -m -d "2024-7-10 00:00" e.txt
[root@localhost opt]# ls -l
总用量
0
-rw-r--r--. 1 root root 0 7
月
14 13:54 a.txt
-rw-r--r--. 1 root root 0 7
月
13 00:00 b.txt
-rw-r--r--. 1 root root 0 7
月
12 00:00 c.txt
-rw-r--r--. 1 root root 0 7
月
11 00:00 d.txt
-rw-r--r--. 1 root root 0 7
月
10 00:00 e.txt
#
查找三天以前的文件
[root@localhost opt]# find /opt/ -name "*.txt" -type f -mtime +3
/opt/e.txt
#
使用
-exec
文件调用
rm
函数
{}
表示前面
find
查到的内容
\;
表示标识符
#
这里在
{}
后面没有打空格报错了,在
{}
后应该打空格
[root@localhost opt]# find /opt/ -name "*.txt" -type f -mtime +3 -exec rm -
rf {}\;
find:
遗漏
“-exec”
的参数
[root@localhost opt]# find /opt/ -name "*.txt" -type f -mtime +3 -exec rm -
rf {} \;
总用量
0
-rw-r--r--. 1 root root 0 7
月
14 13:54 a.txt
-rw-r--r--. 1 root root 0 7
月
13 00:00 b.txt
-rw-r--r--. 1 root root 0 7
月
12 00:00 c.txt
-rw-r--r--. 1 root root 0 7
月
11 00:00 d.txt
根据文件
size
大小搜索文件
find
路径
-size
文件大小
[
常用单位
k M G]
size
值 搜索等于
size
的文件
-size
值 【
0
,
size
值
)
+size
值 (
size
值,正无穷)
扩展命令
dd
使用
dd
创建扩展命令
生成指定大小的测试文件
语法
dd if=/dev/zero of=
文件名称
bs=1M count=1
if
表示输入文件
of
表示输出文件
bs
代表字节为单位的块大小
count
代表被复制的块
其中
/dev/zore
是一个字符设备,会不断地返回
0
字节的文件
案例创建一个
1m
的文件
#
查看文件
[root@localhost opt]# ls
a.txt b.txt c.txt d.txt
#
删除文件
[root@localhost opt]# rm -rf *
#
创建名称为
a.txt
,大小为
1m
的文件
[root@localhost opt]# dd if=/dev/zero of=a.txt bs=1M count=1
记录了
1+0
的读入
记录了
1+0
的写出
1048576
字节
(1.0 MB)
已复制,
0.0027841
秒,
377 MB/
秒
#
查看文件信息,使用单位字节
[root@localhost opt]# ls -l
总用量
1024
-rw-r--r--. 1 root root 1048576 7
月
14 14:37 a.txt
#
查看文件信息,使用文件大小单位 默认
m
[root@localhost opt]# ls -lh
总用量
1.0M
-rw-r--r--. 1 root root 1.0M 7
月
14 14:37 a.txt
生成其他大小的文件
[root@localhost opt]# dd if=/dev/zero of=b.txt bs=5M count=1
记录了
1+0
的读入
记录了
1+0
的写出
5242880
字节
(5.2 MB)
已复制,
0.0111468
秒,
470 MB/
秒
[root@localhost opt]# dd if=/dev/zero of=c.txt bs=10M count=1
记录了
1+0
的读入
记录了
1+0
的写出
10485760
字节
(10 MB)
已复制,
0.0476839
秒,
220 MB/
秒
[root@localhost opt]# ls -l
总用量
16384
-rw-r--r--. 1 root root 1048576 7
月
14 14:37 a.txt
-rw-r--r--. 1 root root 5242880 7
月
14 14:42 b.txt
-rw-r--r--. 1 root root 10485760 7
月
14 14:42 c.txt
[root@localhost opt]# ls -lh
总用量
16M
-rw-r--r--. 1 root root 1.0M 7
月
14 14:37 a.txt
-rw-r--r--. 1 root root 5.0M 7
月
14 14:42 b.txt
-rw-r--r--. 1 root root 10M 7
月
14 14:42 c.txt
基本语法
find
文件路径
-size size
值(单位
k M G
)
size
值 搜索等于
size
大小的文件
-size
值
[0,size
值
)
+size
值 (
size
值
,
无穷大)
#
普通单位查看文件信息
[root@localhost opt]# ls -lh
总用量
16M
-rw-r--r--. 1 root root 1.0M 7
月
14 14:37 a.txt
-rw-r--r--. 1 root root 5.0M 7
月
14 14:42 b.txt
-rw-r--r--. 1 root root 10M 7
月
14 14:42 c.txt
#
搜索文件大小为
5M
的文件
[root@localhost opt]# find ./ -size 5M
./b.txt
#
搜索文件大小小于
10M
的文件
[root@localhost opt]# find ./ -size 10M
./c.txt
#
搜索小于
1m
的文件,隐藏文件也找出来了
[root@localhost opt]# find ./ -size 1M
./
./a.txt
#
搜索文件大小大于
1m
的文件
[root@localhost opt]# find ./ -size +1M
./b.txt
./c.txt
[root@localhost opt]# find ./ -size -1M
案例 搜索系统大于
100M
的文件
[root@localhost opt]# find / -size +100M
/proc/kcore
find: ‘/proc/9352/task/9352/fd/6’:
没有那个文件或目录
find: ‘/proc/9352/task/9352/fdinfo/6’:
没有那个文件或目录
find: ‘/proc/9352/fd/5’:
没有那个文件或目录
find: ‘/proc/9352/fdinfo/5’:
没有那个文件或目录
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/root/mysql-8.4.1-1.el7.aarch64.rpm-bundle.tar
/root/mysql-community-debuginfo-8.4.1-1.el7.aarch64.rpm
/root/mysql-community-test-8.4.1-1.el7.aarch64.rpm
/var/cache/yum/x86_64/7/updates/gen/primary_db.sqlite
/usr/lib/locale/locale-archive
删除
root
目录下文件大大于
100m
的文件
[root@localhost opt]# find /root/ -size +100M -exec rm -rf {} \;
[root@localhost opt]# find / -size +100M
/proc/kcore
find: ‘/proc/9440/task/9440/fd/6’:
没有那个文件或目录
find: ‘/proc/9440/task/9440/fdinfo/6’:
没有那个文件或目录
find: ‘/proc/9440/fd/5’:
没有那个文件或目录
find: ‘/proc/9440/fdinfo/5’:
没有那个文件或目录
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/var/cache/yum/x86_64/7/updates/gen/primary_db.sqlite
/usr/lib/locale/locale-archive