1.文件查找:
在文件系统上查找符合条件的文件
文件查找的相关命令:
locate: 非实时查找(基于索引在数据库中的查找)
find : 实时查找
2.locate命令:
依赖于事先构建的索引:索引的构建是在系统较为空闲的时候自动进行的(周期性任务),你需要手动的更新数据库(命令:updatedb)
索引的构建过程需要遍历整个文件系统,极消耗资源
模式:locate [OPTION]... PATTERN...
locate KEYWORD
3.find命令:
实时查找工具,通过便利指定路径下的文件系统完成文件查找(如果你事先并没有限制文件类型,则默认显示所有的类型文件)
模式:
find [OPTION]... [查找路径] [查找条件] [处理动作]
查找路径:指定具体的目标路径,默认为当前路径目录(包括此目录本身)
查找条件:指定的查找标准,可以为文件名,大小,类型,权限等标准进行;默认为找出指定路径下的所有文件
处理动作:对符合条件的文件做什么操作,默认输出至屏幕
1.查找条件:
1).根据文件名查找:
-name "文件名称":支持使用glob
*,?,[],[^]
-iname "文件名称":不区分字母大小写
-regex "PATTERN":以PATTERN匹配整个文件路径字符串,为不仅仅是文件名称
2).根据属主,属组查找:
-user USERNAME:
-group GRPNAME:
-uid UserID:
-gid GrpID :
-nouser:
-nogroup:
3).根据文件类型查找:
-type TYPR:
f
d
l
s
b
c
p
4).组合条件
-a:与
-o:或
-not:非
5).根据文件大小来查找
-size [+|-]# UNIT
常用单位:K,G,M
#UNIT:(#-1,#]
-#UNIT:[0,#-1]
+#UNIT:[#,OO]
6) .根据时间戳查找
以"天"为单位:
-atime [+|-]#:仅给#表示[#,#-1]
+#表示[#+1,oo]
-#表示[0,#]
-mtime [+|-]#
-ctime [+|-]#
以"分钟"为单位:
-amin
-mmin
-cmin
7).根据权限查找
-perm [/|-]MODE
MODE:精确匹配
/MODE:(有"或"的意义)任何一类(u,g,o)对象的权限中只要有一位匹配即可
-MODE:(有"与"的意义)每一类对象必须同时拥有为其指定的权限标准
2.处理动作
-print:默认的处理动作,显示至屏幕
-ls :类似于对查找到的文件执行"ls -l"命令
-delete:删除查找到的文件
-fls /path/to/somefile:查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND {} \ :对查找的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \:对查找到的没个文件执行由COMMAND指定的命令,但不需要与用户进行交互。
(注:花括号表示查找的文件名称自身)
注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面指令,有些指令不能接受过多参数,此时命令执行可能会失败
另一种方式可规避此问题
find | xargs COMMAND