Linux的find命令的使用

有时候需要知道文件保存在哪个路径下,或者某个字符串在哪个文件中,这时就需要find命令以及find结合管道过滤的技术实现精确查找

1. 基于文件名的查找

-name指定的是文件的名字,可以是精确地名字也可以是正则表达式的Pattern

查找当前目录下,名字为file_1的文件

find . -name "file_1"

查找当前目录,名字为file_开头的文件或者目录

find . -name "file_*"

在当前目录下,名字为file_1,并且忽略大小写的文件或者目录,iname表示名字忽略大小写

find . -iname "file_1"

2. 基于文件的大小查找,+表示大于多少size,-表示小于多少,什么都不加表示等于

find PATH -size +5M

find PATH -size 5M

find PATH -size -5M

3. 基于文件类型的查找,文件类型分为文件f,目录d,链接l,块b等

find PATH -type f -name "xxx"

4.基于文件日期查找,也是用+,-表示大于的和小于的日期

find PATH -mtime +7

find PATH -mtime 7

find PATH -mtime -7

5.基于用户和组查找

find PATH -type f -name "xxx" -user root -group root

6.基于权限的查找

精确查找,查找文件权限是644的,并且以长格式显示

find PATH -type f -perm 644

包含查找,查找文件权限包含的关系,找出权限包含600的文件

find PATH -type f -perm -600

动作处理:

查找到文件后需要对这些文件进行处理,则可能用到的处理有打印,长格式显示,删除,执行

-print是默认的动作,-ls是长格式显示,-delete是删除,-exec是执行动作

一般来说,执行exec的效率不如xargs,因为是遍历的执行,而xargs是一次性作为参数执行

find PATH -type f -name "xxx" -exec rm -rf {} \;

一般来说需要结合xargs来使用处理

find PATH -type f -name "xxx" | xargs rm -rf

find结合grep的使用,常用于定位文件的内容

grep后面的参数,n表示打印行号,R表示递归查找,i表示忽略大小写的查找

find PATH -type f | xargs grep -nRi "xxx"

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容