(第六天)find命令

find:主要要进行文件搜索

基本语法
find [ 文件路径 ] [ 选项 选项的值 ]
-name *
-type f|d
常见的选项
-name 根据文件的名称搜索文件,支持通配符 *
-type f 代表普通文件, d 代表目录
例,找到 httpd.conf 文件
linux 系统中,如果要查找的文件的名称不清晰,可以使用部分文件名 +* 搜索
例 获取 /etc/ 中以 .conf 结尾的文件
例 搜索以 http 开头的文件
.
文件的时间的概念
window 中的时间
1. 创建时间
2. 修改时间
3. 访问时间
使用 stat 命令获取文件的时间信息
语法 stat 文件
例创建文件,并 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
创建时间: -
创建第三个文件
查看四个文件
通过文件的最后修改时间搜索文件
语法
find 文件路径 -mtime +days/-days
-mtime 根据文件最后修改时间搜索文件
+号 搜索几天之前的文件信息
-号 搜索几天之内的文件信息
案例:删除系统 /var/log/ 10 天之前的日志,格式都是 .log 文件
方法 1 报错, rm 不支持这种写法
方法 2 rm ls 不支持管道
方法 3 使用 xargs 将查询结果交给 rm ,可行
方法 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
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值