find--查找
find命令用来根据一定条件查找文件夹或文件,并且可以直接执行一些命令。
语法
1 | # find的完整语法结果如下 |
被简化的极少用到的参数
[-H] [-L] [-P] 主要控制碰到符号链接时采取的行为
-P:也就是默认行为, 从来不follow symbolic links.
-L: 总是follow symbolic links.
-H: 仅仅当作为命令行参数时,也就是这里的[path…],才会follow symbolic links.
[-Olevel]:指定优化等级,在不影响测试结果的前提下,通过reorder测试test,加快测试速度, 0优化等级最低,这是默认行为,3优化等级最高,耗时最少的放在最前面,耗时最多的放在最后面。[-D help|tree|search|stat|rates|opt|exec]:打印诊断信息,当查找的结果跟预想的不一致时,可以使用该调试选项。
路径
路径即需要查找的位置,默认为当前位置,不过还是建议把.加上
选项
选项里的内容其实也很少用到,这里只做下介绍-depth从指定目录下最深层的子目录开始查找-maxdepth levels 查找的最大目录级数,levels为自然数※-regextype type 改变正则表达式的模式。默认为emacs,还有posix-awk、possix-basic、posix-egrep、posix-extended
参数
这部分是实际使用中使用最多的部分了
| 参数 | 说明 |
|---|---|
| -mtime [-n|n|+n] | 按照文件的修改时间来查找 -n 表示文件更改时间距今n天以内 +n表示文件更改时间再n天以上 n表示距现在n天 |
| -atime [-n|n|+n] | 按照文件访问时间来查找 |
| -ctime [-n|n|+n] | 安装文件状态修改时间来查找 |
| -iname | 按文件名查找,忽略大小写 |
| -name | 按文件名来查找,支持* ? []等特殊通配符 |
| –size n[cwbkMG] | 查找文件长度为n块的文件,带有cwbkMG时标示文件长度以字节计,大小前加上+ -表示比该大小更大或更小的文件 |
| -type | 按文件类型查找b 块设备文件 c 字符设备文件 d 目录 p 管道文件 l 符号链接文件 f 普通文件 s socket文件 d 目录 |
| -regex | 接正则表达式 |
| -path pattern | 指定路径样式,配合-prune参数排除指定目录 |
| -group | 按照文件所属的组来查找 |
| -user | 按文件属主查找 |
| -perm | 按文件权限查找 |
动作
| 动作 | 说明 |
|---|---|
| -delete | 删除查找出来的文件 |
| -exec | 执行该参数跟的命令 |
| -ok | 和exec作用相同,但是会让用户先确认 |
| -prune | 使用这一选项可以使find命令不在当前指定目录查找 |
| 打印查找出来的文件,默认功能,使用中可以忽略 | |
逻辑运算
find支持逻辑运算符
| 运算符 | 说明 |
|---|---|
| ! -not | 取反 |
| -a | 取交集相当于and |
| -o | 取并集相当于or |
示例
按大小查找
1 | # 查找当前目录大小为28k文件 |
按文件名查找
1 | # 查找当前目录名为abcde文件 |
按文件权限查找
1 | find . -perm 644 |
按用户查找
1 | find . -user root |
逻辑运算
1 | #在当前目录下搜索文件要么是cangls的文件,要么是bols的文件,两个都可以搜索到。 |
exec
1 | # 这里{}代表之前查找的结果,用;表示结束,考虑不同的系统可能;含义不同,所以加上转义符 |
xargs
find和xargs结合使用也非常常见
1 | [root@master193 hy]# find . -name '*ab*' |xargs ls -lh |
exec 和 xargs区别
- exec 该参数是将查找的结果文件名逐个传递给后面的命令执行,如果文件比较多则执行的效率会较低 xargs是将查找的结果一次性传给后面的命令执行,命令执行效率高,可以使用-n参数控制一次传递文件的个数
- exec文件名有空格等特殊字符也照常处理 xargs处理特殊的文件名(例如:文件名有空格需要采用特殊的方式(find.-name”edu“-print0|xargs -0 ls -lh )


