Find命令详解
定义:find是一个实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找。
实时查找:遍历所有文件进行条件匹配
非实时查找:根据索引查找
工作特性
1.查找速度略慢
2.精确查找
3.实时查找
命令用法
find [OPTIONS] [查找起始路径] [查找条件] [处理动作]
查找起始路径:指定具体搜索目标起始路径,默认为当前目录
查找条件:指定的查找标准,可以根据文件名、大小、类型、从属关系、权限等等标准进行;默认为找出指定路径下的所有文件
处理动作:对符合查找条件的文件做出的操作,例如删除等操作;默认为输出至标准输出
查找条件:
表达式:选项(OPTIONS)和测试(TEST)
测试:通常结果为布尔型
根据文件名查找:
-name "pattern" -iname "pattern" #此选项不区分大小写(支持glob风格的通配符:*,?,[],[^] -regex pattern:基于正则表达式模式查找文件,匹配范围是整个路径
根据文件的从属关系查找:
-user USERNAME : 查找属主为指定用户(USERNAME)的所有文件 -group GRPNAME : 查找属组为指定组(GRPNAME)的所有文件 -uid UID : 查找属主为指定UID的所有文件 -gid GID : 查找属组指定GID的所有文件 -nouser : 查找没有属主的所有文件 -nogroup : 查找没有属组的所有文件
- 根据文件类型查找:
|
|
eg:
|
|
组合测试
与、或、非
- 与:-a,默认组合逻辑
|
|
或:-o,优先判断
-o
之后的参数非:-not或!
!A -a !B = !(A -o B) !A -o !B = !(A -a B)
根据文件大小查询
|
|
根据时间戳查找:
以”天”为单位查找:
-atime[+|-]#:根据访问文件的时间查找 #:[#,#+1) -#:[0,#) +#:(#+1,∞)或(∞,#+1) -mtime:根据修改文件数据的时间查找 -ctime:根据修改文件状态的时间查找
以”分钟”为单位查找:
*用法与-atime相同* -amin:根据访问文件的时间查找 -mmin:根据修改文件数据的时间查找 -cmin:根据修改文件状态的时间查找
eg:
|
|
根据权限查找:
|
|
eg:
|
|
处理动作
|
|
==注意:==find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令
但是有些命令不能接收过长的参数,命令执行会失败;另一种方式可规避此问题
==find | xargs COMMAND 对于需要执行的命令则使用管道符将find查找到的文件路径传给xargs来执行要操作的命令==
本文出自Maxie’s Notes博客,转载请务必保留此出处。