Linux命令之文件查找命令find

文件查找:在文件系统上查找符合条件的文件
工具:locate find
locate命令
在/var/lib/mlocate中有一个专门构建好的数据库,locate命令查找主要依赖于这个构建好的数据库,而系统内的文件更新具有一定的周期性,它对于刚新建的文件或目录是无法查找的,所以必须手动更新数据库,使用命令updatedb。另外,对/tmp这个临时目录下的文件或目录,用locate命令也是无法查找的

工作特性: 1、查找速度快
2、模糊查找
3、非实时查找
用法:
locate [OPTION]... PATTERN...
-b(basename) 只匹配路径中的基名
-c 统计出共有多少
-r 基本的正则表达式(BRE)
注意:索引构建过程需要遍历整个根文件系统,消耗系统资源比较大

find命令
它是一个实时查找工具,通过遍历指定起始路径下的文件系统层级结构来完成文件查找。

工作特性: 1、查找速度慢
2、精确查找
3、实时查找
用法:
find [optins] [查找起始路径] [查找条件] [处理动作]
查找起始路径:指定具体搜索目标起始路径,默认为当前目录
查找条件:指定的查找标准,可以根据文件名、大小、类型、从属关系、权限等标准进行,默认为找到指定路径下的所有文件
它的表达式分为:选项和测试
(1)测试:通常为布尔型(true or false)
组合测试:与(-a) 或(-o) 非(-not,!)
(2)选项
根据文件名查找
-name pattern
-iname pattern 文件名不分大小写,它支持glob风格的通配符:*、?、[]、[^]
-regex pattern 基于正则表达式查找文件,匹配的是整个路径,而非基名
根据文件从属关系查找
-user USERNAME 查找属主指定用户的所有文件
-group GRUPNAME 查找属组指定组的所有文件
-uid UID 查找属主指定UID的所有文件
-gid GID 查找属主指定GID的所有文件
-nouser 查找没有属主的文件
-nogroup 查找没有属组的文件
根据文件类型查找
-type TYPE(f,file/d,directory/b,block/c,character device/l,symbolic link/p,pipe/s,socket)
根据文件大小查找
-size [+|-]#unit 不带加减属于精确查找,常用单位为k、M、G
#unit (#-1,#]
-#unit (0,#-1]
+#unit (#,+∞)
根据时间戳查找
以天为单位 -atime/-mtime/-ctime
以分钟为单位 -amin/-mmin/-cmin
根据文件权限查找
-perm [/ | -]mode
mode 精确权限匹配
/mode 任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足(9位权限之间存在“或”的关系)
-mode 任何一类用户(u,g,o)的权限中的任何一位(r,w,x)同时符合条件即满足(9位权限之间存在“与”的关系)
处理动作:对符合查找条件的文件作出的操作,如删除、查看等操作,默认输出为标准输出
-print 输出至标准输出,默认的动作
-ls 类似于对查找的文件执行命令:ls -l,输出文件的详细信息
-delete 删除查找到的文件(危险操作)
-fls /pathtToSomefile 查找到所有文件的详细信息保存到指定文件中(危险操作)
-ok COMMAND {} ; 对查找到的每个文件执行由COMMAND表示的命令,每次操作都由用户确认,很麻烦所以用exec更方便(其中{}为占位符,表示引用,找到文件的列表;\为固定格式)
-exec COMMAND {} ; 对查找到的每个文件执行由COMMAND表示的命令
注意:find传递查找到的文件路径到后面的命令时,是先查出所有字符的文件路径,并一次性传递给后面的命令,但有时有些命令不能接受过长的参数,此时命令执行会失败,所以另一种方式可规避此问题,用命令:find | xargs COMMAND

sargs命令

posted @   流星job  阅读(344)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示