Linux下的find命令详解
在linux下有两种查找符合条件文件的命令,是locate和find。我们来说说find这个命令。
find:
- 实时查找工具,遍历查找指定路径下的所有的文件来找到符合条件的文件。
- 特点:查找文件比locate速度略慢,查找文件很精确,并且是实时进行查找的。
- 使用方法:find [OPTIONS] [查找起始路径] [查找条件] [处理动作]
- 查找时的起始路径:默认是当前目录,或者是指定具体要搜索目标的起始路径。
- 查找条件:可以根据文件名、文件大小、文件类型、从属关系、权限等标准来进行查找。默认为查找指定路径下的所有文件。
- 处理动作:对找到符合条件的文件做之后的处理操作,比如删除、修改等,默认是输出到标准输出。
按照文件名来查找:
- -name “pattern” — 按照字符串来查找
- -iname “pattern” — 不区分文件名的大小写来查找,支持glob风格的通配符(* ? [ ] [^})
- -regex pattern — 按照正则表达式模式来查找,查找的是整个文件路径,而不是文件名。
按照文件从属关系查找:
- -user USERNAME:查找属主指定用户的所有文件;
- -group GRPNAME:查找属组指定组的所有文件;
- -uid UID:查找属主指定的UID的所有文件;
- -gid GID:查找属组指定的GID的所有文件;
- -nouser:查找没有属主的文件;
- -nogroup:查找没有属组的文件;
按照文件类型查找:-type TYPE
- f: 普通文件
- d: 目录文件
- l:符号链接文件
- b:块设备 文件
- p:管道文件
- s:套接字文件
组合语句时用的逻辑选项:
- 与:-a, 默认为这个组合逻辑;
- 或:-o
- 非:-not, !
按照文件大小查找:
- 格式:-size [+|-]#UNIT
- 常用单位:k, M, G
- #UNIT:(#-1,#]
- -#UNIT:[0,#-1]
- +#:(oo,#-1]
按照时间戳查找:
以“天”为单位:
- -atime
- -mtime
- -ctime
以“分钟”为单位:
- -amin
- -mmin
- -cmin
按照权限查找:
- 格式:-perm [/|-]mode
- mode:精确权限匹配;
- /mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;9位权限之间存在“或”关系;
- -mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足;9位权限之间存在“与”关系;
一些处理动作:
- -print:输出至标准输出;默认的动作;
- -ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息;
- -delete:删除查找到的文件;
- -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;
- -ok COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;
- -exec COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;
注意:find传递查找到的文件路径到后面的命令时,是查找出所有符合的文件路径并一次给后面;
有些命令不能接受过长的参数,用另外一种方式避免此问题: find | xargs COMMAND
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/92735