1.1 locate

格式
locate [OPTION]... [PATTERN]...
#常用选项
-A|--all               #输出所有能匹配到的文件名,不管文件是否存在
-b|--basename          #仅匹配文件名部分,而不匹配路径中的内容
-c|--count             #只输出找到的数量
-d|--database DBPATH  #指定数据库
-e|--existing          #仅打印当前现有文件的条目
-L|--follow            #遇到软链接时则跟随软链接去其对应的目标文件中查找 (默认)
-i|--ignore-case       #忽略大小写
-l|--limit|-n N        #只显示前N条匹配数据
-P|--nofollow, -H      #不跟随软链
-r|--regexp REGEXP     #使用基本正则表达式
--regex                #使用扩展正则表达式
-s|--stdio             #忽略向后兼容
-w|--wholename         #全路径匹配,就是只要在路径里面出现关键字(默认)
范

1.2 find

ind 是实时查找工具,通过遍历指定路径完成文件查找;

工作特点:

查找速度略慢

精确查找

实时查找

查找条件丰富

可能只搜索用户具备读取和执行权限的目录

1.2.1 指定搜索目录层级

-maxdepth N   #最大搜索目录深度,指定目录下的文件为第1级
-mindepth N   #最小搜索目录深度

1.2.2 先处理文件再处理目录

-depth #先处理文件

1.2.3 根据文件名和inode查找

-name name    #支持使用glob,如:*, ?, [], [^],通配符要加双引号引起来
-iname name   #不区分字母大小写
-inum number  #按inode号查找
-samefile name  #相同inode号的文件
-links n        #链接数为n的文件
-regex "PATTERN"    #以PATTERN匹配整个文件路径,而非文件名称

1.2.4 根据属主属组查找

-user USERNAME  #查找属主为指定用户(UID)的文件
-group GRPNAME  #查找属组为指定组(GID)的文件
-uid UserID     #查找属主为指定的UID号的文件
-gid GroupID    #查找属组为指定的GID号的文件
-nouser   	    #查找没有属主的文件
-nogroup  	    #查找没有属组的文件

1.2.5 根据文件类型查找

-type TYPE #指定文件类型

#type 值
f 	#普通文件
d 	#目录文件
l 	#符号链接文件
s 	#套接字文件
b 	#块设备文件
c 	#字符设备文件
p 	#管道文件

1.2.6 空文件或目录

-empty   #空文件或空目录

1.2.7 组合条件

-a        #与,多条件默认就是与关系,可省略
-o 		  #或
-not|!	  #非

1.2.8 排除目录

-prune	 #跳过,排除指定目录,必须配合 -path使用

1.2.9 根据文件大小来查找

-size [+|-]N UNIT # N为数字,UNIT为常用单位 k, M, G, c(byte) 等

#解释
10k #表示(9k,10k],大于9k 且小于或等于10k
-10k #表示[0k,9k],大于等于0k 且小于或等于9k
+10k #表示(10k,∞),大于10k

1.2.10 根据时间戳

#以天为单位
-atime [+|-]N
-mtime [+|-]N
-ctime [+|-]N

#以分钟为单位
-amin [+|-]N
-mmin [+|-]N
-cmin [+|-]N

#解释
N #表示[N,N+1),大于或等于N,小于N+1,表示第N天(分钟)
+N #表示[N+1,∞],大于或等于N+1,表示N+1天之前(包括) 
-N #表示[0,N),大于或等于0,小于N,表示N天(分钟)内

1.2.11 根据权限查找

-perm [/|-]MODE

MODE  #精确权限匹配 
/MODE #任何一类(u,g,o)对象的权限中只要有一位匹配即可,表示或者(or)关系
+MODE #从CentOS 7开始己淘汰
-MODE #每一类对象都必须同时拥有指定权限,表示与(and)关系
      #0 如果要找时权限位上的值为0,则表示不关注该角色权限

1.2.12 正则表达式

-regextype type #正则表达式类型,emacs|posix-awk|posix-basic|posixegrep|posix-extended
-regex pattern  #正则表达式

1.2.13 处理动作

-print    #默认的处理动作,显示至屏幕
-print0   #不换行输出,常用于配合xargs
-ls       #类似于对查找到的文件执行"ls -ils"命令格式输出
-fls file #查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file
-delete   #删除查找到的文件,慎用!
-ok COMMAND {} \;     #对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \;   #对查找到的每个文件执行由COMMAND指定的命令
{}        #用于引用查找到的文件名称自身

1.3 参数替换 xargs

xargs [OPTION]... COMMAND [INITIAL-ARGS]...

#常用选项
-0|--null #用 assic 中的0或 null 作分隔符
-a|--arg-file=FILE         #从文件中读入作为输入
-d|--delimiter=CHARACTER   #指定分隔符
-E END                     #指定结束符,执行到此处时停止,不管后面的数据
-L|--max-lines=N  		   #从标准输入一次读取N行送给 command 命令
-l                		   #同上
-n|--max-args=MAX-ARGS     #一次执行用几个参数
-p|--interactive           #每次执行前确认
-r|--no-run-if-empty       #当xargs的输入为空的时候则停止xargs,不用再去执行了
-s|--max-chars=MAX-CHARS   #命令行最大字符数
-t|--verbose               #显示过程,先打印要执行的命令
-x|--exit                  #退出,主要配合-s使用