前言:
在上一节,我们了解到rm删除命令,一共拥有三种模式,即-i默认只能删除文件且会提示确认,其次是-r 遍历删除,用于删除目录及目录下的文件,同样需确认后才会删除,最后为-f为强制删除。其中我们还提到可以通过*.doc的方式来批量删除带有相同后缀的文件。
这一节我们来学习,怎么在linux的众多文件中找到你需要的目录或文件。
一、find--查找
1、自我介绍
我是find查找命令,我可以快速帮你们定位需要的文件或目录等。通过灵活组合,可以找到任一你需要的文件或目录等。下面来看看我的能力面板~
find -empty 查找空白文件或者目录; -group 按组查找; -name 按名称查找;
-iname按名称查找,且不区分大小写;-mtime 按修改时间查找; -size按容量查找;
-type 按类型查找,文件(f)、目录(d)、设备(b,c)、链接(l)等;
-user 按用户名查找;-exec 对找到的文件执行特定的。
2、应用说明
从上面来看,find功能很强大,因此我们可能有点记不住。其实我们没必要去记,我们去记我们查找的场景就好,一般我们找东西,一般想到的是按名字,其次是按类型、按什么开头、什么结尾之类,或者就是最近有使用的。
因此就对应find -name/iname #按名称查找 find type -f #按类型查找
find -name *.log(doc/txt/csv等) #按log/doc/txt/csv后缀结尾的查找
find -name rpm. #查找rpm开头的文档
二、实践案例
实践出真知,下面我们针对常用的几种常见场景来看看find在实际应用中的表现。
1、精确查找
如果我们很清楚我们查找的文件名称和大致位置,我们就可以采用类似下面的查询命令,完成在data目前下查找所有的hello.doc文件。
find /data -name hello.doc #查找data目录下的hello.doc文件
2、模糊查找
如果我们想查找某一后缀的文件,如查找所有doc文件,此时可以使用下面的find命令来完成。
find /data -name *.doc #查找所有后缀为doc的文件
如下图所示,我们第一次查找时,我们能批量找出我们需要的doc文件,因服务器只有一个doc文件,因此我们切换到data下面的test1目录去创建了两个额外的doc结尾文件,但此时在这个目录下去执行查找data目录下doc文件时会报错,这是因为find查找时需要在一个大于它的目录下执行。即我们查询我们D盘下某个文件,需要在我的电脑目录下,或者D盘目录下去查找。
查找hello开头的文件,注意匹配符号为*
3、按文件大小查找-一般用于查询占空间较大的文件或空文件
查找空文件 或空目录
find /data -empty #查找data目录所有的空目录及空文件
查找大文件
如下图所示我们查找大于文件大小时,需最小指定1M以上的文件,因此可见find查找文件大小设计的时候,多用于定位大文件和空文件。
4、查找最近修改的文件
查找近三天修改的文件
find /data/test1 -mtime -3 #查找近3天修改的文件
如下图所示,今天是24年2月7日,查找test1下面为近3天文件
查找3天前修改的文件,如下图所示查找出3天前修改的文件信息。
5、武魂融合技
find有很多基本的命令,这些基本的命令可以通过组合来达到复杂查找的需求,如查找所有大于1M的文件。
find /data/test1 -size +1M -a -type f #查找所有大于1M的文件
三、总结
总的来说,find命令组合有很多,但是我们日常使用较多时按名称查找,按类型、开头、结尾等方式查询,因为我们只有掌握了几种常用的查找技巧即可满足我们日常操作需求,当然在我们熟悉的前提,我可以使用武魂融合技来达到复杂需求的目的,最后在这里祝大家新年快乐,万事亨通~