Linux文件查找之Find详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux文件查找之Find详解相关的知识,希望对你有一定的参考价值。
Linux文件查找之find详解- find:实时查找工具,通过遍历指定路径下文件系统层级结构完成文件查找
- 工作特性:
查找速度略慢
实时查找
精确查找 - find用法:find [option]...[查找路径] [查找条件] [处理动作]
查找起始路径:指定具体搜索目标起始路径,默认认为当前目录
查找条件:指定的查找标准,可以根据文件名,文件类型,从属关系,
权限等标准进行,默认为找出指定路径下的所有文件
处理动作:对符合查找条件的文件做出的操作,例如:删除等操作,默认
为输出至标准输出 - 查找条件:
(1)根据文件名查找:
-name "文件名称":支持使用globbing字符
-iname"文件名称":查找时忽略字符大小写
:匹配任意长度的任意字符
?:匹配单个字符
-regex pattern:基于正则表达式查找文件,匹配是整个路径而非其名
(2)根据文件从属关系查找:
-user USERNAME:根据文件的属主查找
-group GROUPNAME:根据文件的属组查找
-uid UID:查找属主指定的UID的所有文件;
-gid GID:查找属组指定的GID的所有文件;
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
(3)根据文件类型:
-type TYPE:根据文件类型查找
f:普通文件
d:目录文件
l:符号文件
b:块设备
c:字符设备
s:套接字文件
p:命名管道
(4)根据文件大小查找:
-size [+|-] #UNIT: 常用单位:k,M,G
#UNIT:(#-1, #]
-#UNIT:[0,#-1]
+#UNIT:(#, oo)
(5)根据时间戳查找:
按照atime(文件最后访问时间),mtime(文件的最后修改时间),ctime(文件最后改变时间)三个变量来查询:
以天为单位:
-atime[+|-]#:
#:[#, #-1) :最后访问时间在#天前(大于等于#天前,小于#-1天前)
等价于最后访问时间与当前的时间差 大于 (#-1)24小时,小于等于 #24小时
-#:[#-1, 0]:最后访问时间在#天以内,不包括24小时前的那一刻。
等价于最后访问时间与当前的时间差小于 #24小时
+#:(oo, #]:最后访问时间在#天以前的。包括#-1天前
等价于最后访问时间与当前的时间差大于等于 #*24小时
以分钟为单位:
-amin,-mmin,-cmin
(6)根据权限查找:
-perm [/|-] mode:
mode:精确权限匹配
/mode:任何一类用户(u,g,o)的权限中任何一位(r,w,x)符合条件即满足,9位权限之间存在“或”关系
-mode:每一类用户(u,g,o)的权限中每一位(r,w,x)都符合条件即满足,9位权限存在“与”关系
(7)组合条件查询:
与:-a,同时满足
或:-o,满足一个即可
非:-not,!,条件取反
-not A -a -not B = -not (A -o B)
-not A -o -not B = -not (A -a B) -
处理动作:
-print:输出至标准输出(默认)
-ls:类似于对查到的文件执行"ls -l"
-delete:删除查找的文件
-fls /PATH/TO/SOMEFILE:把查找到所有文件的长格式保存至指定文件中
-ok COMMAND \;对查找的文件执行COMMAND表示的命令,,每次操作都由用户进行确认
-exec COMMAND \; 对查找的文件执行COMMAND表示的命令注意:find传递查找的文件路径至后面的命令时,是先查找所有符合条件的文件路径,并一次性传递给后面的命令,但是有些命令不能接受过长的参数,此时命令会执行失败,另一种方式可规避此问题: find | xargs COMMAND
以上是关于Linux文件查找之Find详解的主要内容,如果未能解决你的问题,请参考以下文章