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