find 命令




k 小写,M大写


find [搜索范围] [搜索条件]
find /root -name abc
通配符
* 匹配任意字符
? 匹配任意一个字符
[] 匹配中括号内一个字符
-iname 不区分大小写
-user 按照所有者搜索
-nouser 查找没有所有者的文件
-mtime 按照时间范围搜索(+10 10天前 -10 10天内 10 10天当天)
-size 按照文件大小
-inum 查找i节点
find /etc -size +25k -a -size -50k -exec ls -lh {} \;
-exec 命令 {} \; 表示对搜索结果进行处理
-a 逻辑与 -o 逻辑或
find /root -size +10k -size -20k -exec rm -rf {} \;
以上命令是找到root目录下 大于10K并且小于20K的文件后执行删除操作,-exec 命令 {} \; 是特定的格式
find [搜索范围] [搜索条件]
lunix通配符 * ? []
find / -name 文件名
find / -iname 文件名 不区分文件名的大小写
find / -user root 按照所有者搜索
find / -nouser 查找没有所有者的文件(除了内核产生(proc和sys产生的文件)与外来文件这两种情况,其他都是垃圾文件)
find /var/log -mtime +10 按照时间查找修改的文件
+10 十天前修改的文件
10 10天当天的24小时之内修改的文件
-10 10天内修改的文件
mtime 修改文件内容
ctime 修改文件属性
atime 文件访问时间
默认时间是‘天’
find / -size 25k 按照文件大小查找文件
25k 正好是25k
+25k 大于25k的文件
-25 小于25k的文件
注意:文件大小k是小写 MB写为大写的M
find / -size +2k -a -size -3k 查找用逻辑连接规定范围内的文件
a and 与
o or 或
find /etc -size -3k -exec ls -lh {} \; 将前一个条件查找出来的文件交给第二条命令处理
-exec 条件 {} \; 大括号+空格+\+;(分号) 是固定格式
find / -inum 262422 查找i节点是262422的文件
find搜索(避免大范围的搜索,会非常浪费系统资源,建议不在直接在“/”目录下搜索)
格式:find 【搜索范围】【搜索条件】;
例:find /home -name 文件名;
注意:find搜索默认是完全匹配。
如果需要进行模糊查询,需要添加通配符,通配符有以下3种
“*”匹配任意字符,例:find /home -name “*test*”,显示所有名字带test的文件;或例:find /home -name “*”,home目录下的所有文件,包括隐藏文件。
“?”匹配任意一个字符,
“【】”匹配任意一个中括号内的字符,例:find /home -name “test【12】”,显示test1和test2文件;或find /home -name “【12】*”,显示以1和2开头的文件。
组合使用:例:find /home -name “*【12】”,显示所有1和2结尾的文件
find 按文件时间来搜索
find /home -mtime +10 在home目录下,查找10天前修改的文件
find /home -mtime 10 在home目录下,查找10天前当天修改的文件
find /home -mtime -10 在home目录下,查找10天内修改的文件
atime 文件访问时间
ctime 改变文件属性
mtime 修改文件内容
find搜索
find /root -iname test 不区分要搜索的test大小写格式
find /root -user root 搜索root目录下的所有属于root用户的文件
find /root -nouser 没有所属者的文件,liunx中,每个文件都有所属者,如果没有,那么一般都是垃圾文件,但还是有特例的,比如内核产生的文件,就没有所属者,一般在proc和sys目录下;还有外来文件,也就是U盘拷入的文件也会忽略所有者。
find 目录 -size 文件大小
注意:文件大小用小写k和大写M。
-a 表示and
-o 表示or
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
-exec {} \; 固定格式,表示直接对前面的搜索结果进行后面的命令处理
find / -name install.log
通配符、* ? [] ""
find /root -name "install.log"
find /root -name "*[cd]"
find /root -name "abc[cd]"
find /root -iname install.log (iname不区分大小写)
find /root -user root
find /var/log/ -mtime +10 查找10天前修改的文件 -10 10天内 10 指10天当天
atime 文件访问 ctime改变文件属性 mtime修改文件
. 当前文件
find . -size 25k
find /root size +20M
-a and逻辑与
-o or
find /root -size +20k a -size -50k
-exec 命令 {} \ 对搜索结果执行操作
-exec ls -lh {} \
h是人性化显示
find /root -iname install.log
find /root -user root
find /root -nouser
find /root -inum 262421
find /etc -size +20k a -size -50k -exce ls -lh {} \;
find
命令
find /root -name "install.log*" 搜索文件名包含install.log的文件
find /root -name "ab[cd]" 搜索文件名为abc或abd文件
find /root -name "*[cd]" 搜索文件名以c或d结尾的文件


千字节是小写的k 兆字节是大写的M
1扇区=512字节=512k















find功能强大,非常有用,然后就是这些常见的命令都要会。
find /root -name"[cd]" #搜索文件名是c或d的文件








硬盘扇区的数据块
巩固练习
find / -name install.log #搜索install.log文件
find /root -name "install.log*" #搜索文件名前面含install.log字符的所有文件
find /root -name "*" #搜索root 目录下的所有文件
find /root -name"ab[cd]" #ab后面紧接a或者d的文件
find /root -name"[cd]" #搜索
find /root -name"*[cd]" #搜以c或d结尾的字符的文件
find /root -user root #搜索root所有者的文件
find /root -nouser #搜没有所有者的文件,即垃圾文件(如内核产生的,不应删除;外来文件也没有所有者:例如光盘等)
ls / #查看根下的所有目录(在这些目录中,内核可能会在proc和sys目录下交互)
find /var/log -mtime +10 #查找10天前的文件
find . -size 25k #搜索当前目录下为25k的文件(注k是小写)
find /etc -size +20M #搜索etc目录下为20M的文件
find /root -size 25 #找25个扇区这么大的文件(一个扇区是512k)
ls -i
find /root -inum 262421 #查看i节点为262421 的文件
find /etc -size +20k -a -size -50k #查看etc目录下大于20k小于50k 的所有文件
find /etc -size +20k -a -size -50k -exec ls -l {} \; #查看etc目录下大于20k小于50k 的所有文件的信息
find /etc -size +20k -a -size -50k -exec ls -lh {} \; #信息人性化显示etc目录下大于20k小于50k 的所有文件的信息
find/root -inum 262421 -exec rm -rf {} \; 删除 i节点为262421的文件
加*号匹配任意内容
find
文件搜索命令find [搜索范围] [搜索条件]
* 匹配任意内容;
? 匹配任意一个字符;
[] 匹配任意一个中括号内的字符;
find / -name install.log
find /root -iname install.log /不区分大小写
find /root -user root /按照所有者搜索
find /root -nouser /查找没有所有者的文件
没有所有者的文件是垃圾文件可以清理,
1、但是proc、sys目录下的内核交互产生的文件不能进行清理;
2、外来文件,如U盘、外来数据是没有所有者的;
find /var/log -mtime +10 /查找10天前修改的文件
-10 10天内修改文件
10 10天当天修改的文件
+10 10天前修改的文件
atime 文件访问时间
ctime 改变文件属性
mtime 修改文件内容
find . -size 25k /查找当前目录文件大小是25k的文件
只能是小写的k,或大写的M;
-25k 小于25KB的文件
25k 等于25KB的文件
+25k 大于25KB的文件
find . -inum 262422 /查找i节点是262422的文件
find /etc -size +20k -a -size -50k /查找/etc/目录下,大于20KB并且小于50KB的文件
-a and 逻辑与,两个条件都满足;
-o or 逻辑或,两个条件满足一个即可;
find /etc -size +20k -a -size 50k -exec ls -lh {} \;
查找/etc/目录下,大于20KB并且小于50K的文件,并显示详细信息
-exec/-ok命令{} \;对搜索结果执行操作

杀毒、拷贝、压缩都会让系统变得非常缓慢
find搜索的文件名必须一模一样才能找到


没有所有者的文件就是垃圾文件
特殊情况:
内核产生:内核是直接调用它不经过系统内部,它产生的文件有可能没有所有者
proc 和sys这两个目录为内存的挂载点,内核可能在这两个目录中进行交互,这两个目录中没有所有者的文件应该是正常的
外来文件:U盘、光盘、移动硬盘中的文件没有所有者(因为它们是在windows中建立的,wiondows忽略了所有者概念)

ls -i [文件名] 查看i节点

find /root -inum 262421 -exec rm -rf {} \;删除i节点为262421的文件
3.find命令笔记,接上一节笔记
find 范围 iname 文件名 :不区分大小写搜索
find 范围 -user root : 按照所有者搜索,不常用,几乎不用
find 范围 -nouser :查找没有所有者的文件,
(有些文件,比如tmp和sys中是正常的,这句还需验证一下看看)
按照时间搜索,这里是按天搜索,也可以按分钟搜索:
find /var/log/ -mtime +10
查找10天前修改的文件
-10 10天内修改的文件
10 10天当天修改的文件
+10 10天前修改的文件
(注意时间轴,+10,10,-10)
atime:文件访问时间
ctime:改变文件属性
mtime:修改文件内容

按照文件大小搜索
find . -size 25k
查找文件大小是25kb的文件,.代表当前目录,也可以写具体目录
-25 k :小于25kb的文件
25 k :等于25kb的文件
+25 k :大于25kb的文件
如果要找大于多少M的文件,M需要大写;但是找字节的需要小写kb;若不写单位,搜索的是数据块。
查找i节点是134962的文件
find . -inum 134962
查找大于20k小于50k的文件:
find /etc -size +20k -a -size -50k
此时想要查看大小:
find /etc -size +20k -a -size -50k -exec ls -lh{} \;( 只要加-exec ,结尾就要加{}\; 意思是对搜索结果执行操作,注意分号别忘了,后面只能放处理第一个文件结果的命令,
写的时候注意{}中间无空格,{}和]\之间有空格,;必不可少,否则会报错
[aimdb@10.10.149.19 172.17.0.1 :/home/aimdb/tools/zhaozy/plcs/data01/raw_bak/decode/de_mms_nfv_nmm/2021/05/18]%find . -size 45k -exec ls -lh {} \;
-rw-r--r-- 1 aimdb aimdb 45K 5月 18 06:34 ./NMM_AO_20210518210.025
-rw-r--r-- 1 aimdb aimdb 45K 5月 18 23:04 ./NMM_AO_20210518210.091
{}代表的是「由 find 找到的内容」,找到的结果会被放置到 { } 位置中;-exec一直到 ; 是关键字,
代表找到额外动作的开始(-exec)到结束(\),在这中间的就是找到指令内的额外动作。
因为「;」在bash的环境下是有特殊意义的,因此利用反斜线来跳脱。


#!/bin/bash
#变量file赋值,通过find命令查找 10天前的log日志
file=$( find /var/log/ -mtime +10 )
#把file变的值赋值给i,做循环处理,并输出显示
for i in $file
do
rm -rf $i
echo "已删除 $i"
done
命令:find /root -nouser
查找root目录下没有所有者的文件,如果是垃圾文件手工把它清理掉(两种情况不是垃圾文件:1.sys,proc文件下的文件 2.外来数据)
点号指当前目录
只要写-exec,后面就要加{} \;
中间可以接第二条命令,命令2处理命令1的搜索结果

find搜索的内容必须一模一样,如果还需要搜索其他内容,就需要使用通配符。



find命令非常强大
find 搜索范围(/) 搜索条件
find / -name xxx
find /root -iname xxx 不区分大小写
find / -user xxx 所有者
find / -mtime +10
十天前修改文件内容
ctime修改文件属性
atime 文件访问时间
find -size 25M
25个1024k
-a逻辑与
-o逻辑或
无法模糊查询,只能使用通配符
通配符 * ? 【】
find 查找介绍
find其它格式4
find其它格式3
find其它格式2
find其它格式
Linux中的通配符
文件搜索命令:find
11111
find /etc -size +20k -a -size -50k # 查找 /etc/ 目录下,大于 20KB 并且小于 50KB 的文件
-a and 逻辑与,两个条件都满足
-o or 逻辑或,两个条件满足一个即可
find /etc -size +20k -a -size -50k -exec ls -lh {}\;
# 查找 /etc/ 目录下,大于 20KB 并且小于 50KB 的文件,并显示详细信息
# -exec/-ok 命令 {} \;对搜索结果执行操作
find . -size 25k # 查找文件大小是 25KB 的文件
-25k 小于 25KB 的文件
25k 等于 25KB 的文件
+25k 大于 25KB 的文件
find . -inum 262422 # 查 i 节点是 262422 的文件