一、linux的文件查找工具
1、locate工具
2、find工具
二、locate命令
1、特点:
(1)依赖数据库(可以用update更新数据库,但费时长,现实企业环境最好不用)
(2)非实时查找,结果非精确
(3)查找速度快
(4)模糊查找
三、find命令
1、特点:
(1)实时查找,查找速度慢
(2)精确匹配
2、find命令格式:
# find [options] [查询路径] [查找条件] [处理动作]
(1)默认情况:
①查询路径:默认当前目录
②查找条件:默认为查找指定路径下的所有文件
③处理动作:默认为显示
(2)查找条件选项:
①-name ‘FILENAME’:对文件名作精确匹配,文件名支持通配符匹配(globbing,{*,?,【】,【^】}),文件名有空格用“”括起。
②-iname ‘FILENAME’:文件匹配时不区分大小写,同上支持globbing。
③-regex PATTERN:基于正则表达式进行文件查找(文件名匹配)
④-user USERNAME:根据文件属主查找
⑤-group GROUPNAME:根据文件属组查找
⑥-uid UID:根据文件的UID查找
⑦-gid GID:根据文件的GID查找
上述两个选项的意义在于:如果用户或组被删除后,文件中包含的属主、属组的查找会被转换成对应的uid和gid查找
⑧-nouser :查找没有属主的文件
⑨-nogroup :查找没有属组的文件
⑩-type {f,d,c,b,l,p,s}:查找特定的文件类型
f:普通文件
d:目录
c:字符设备
b:块设备
l:符号链接文件
p:命名管道设备
s:套接字设备
⑪-size [+|-] SIZE(大小)unit(单位):按文件大小查找
+表示大于,-表示小于
常用单位:
[+|-]#k
[+|-]#M
[+|-]#G
⑫组合条件:
-a :与(and)
-o :或(or)
-not:非(not)
优先级:-not>-a>-o
非A或非B==非(A且B)
非A并非B==非(A或B)
⑬按时间戳查找:-{m,c,a}{time,min} [+|-]#
以天为单位:
-mtime #:表示过去第(#+1)天以后第#天以前的时间段被修改过的文件
-ctime #:表示过去第(#+1)天以后第#天以前的时间段被改变过的文件
-atime #:表示过去第(#+1)天以后第#天以前的时间段被访问过的文件
以分钟为单位:
-mmin #:表示过去第(#+1)分钟以后第#分钟以前的时间段被修改过的文件
-cmin #:表示过去第(#+1)分钟以后第#分钟以前的时间段被改变过的文件
-amin #:表示过去第(#+1)分钟以后第#分钟以前的时间段被访问过的文件
上述均支持[+|-]#
+表示:过去第(#+1)天(分钟)以前被访问过
-表示:现在到过去第#天(分钟)以内被访问过
⑭按文件权限位查找:-perm [+|-]MODE(精确匹配,MODE为3位八进制数)
+MODE:9位权限位中任意一位匹配即满足条件(任何一类用户任何一维权限匹配即可)–>常用于查找某类用户的某特定权限是否存在
-MODE:文件权限能完全包含MODE时才满足(每类用户的任何一位权限为匹配才满足)–>常用于查找某类用户包含哪些权限
没有符号:精确匹配权限位置
(3)处理动作:(默认为-print)
①-print:打印在标准输出上
②-ls:以长格式输出各文件信息
③-exec COMMAND {} \;:对查找的文件执行指定的命令
④-ok COMMAND:交互式的-exec
⑤find | xargs COMMAND:与exec功能相似,但需要通过管道将标准输入转换为命令。
例:find /tm p/test/ -perm -666 | xargs ls -l {}
find /etc/ -size +1M | xargs echo {} >> /tmp/etc.largefiles
{}是文件占位符代替查找到的文件的名称
-exec的好处:
例:find /tmp/test -perm -666 -exec {} {}x \;
可用于对搜索到的文件名进行二次或以上的引用,而xargs只能引用一次。
xargs的好处
可以对搜索到的文件名逐个处理