一.find介绍:
find是Linxu中一个十分常用的文件查找工具,其工作原理是通过遍历启起始路径下文件层级结构完成的,其特点是查找速度慢,能做到实时查找和精确查找。
二.使用方法:
find start_path search_conditions action |
1.statr_path:所要查找的文件的起始位置,默认是当前目录
2.earch_conditions:
(1)根据文件名进行查找:
-name filename :根据文件名进行查找,filename支持glob风格的文件名通配
-iname filename:根据文件名进行查找,filename支持glob风格的文件名通配,不过忽略文件名中的大小写
使用示例:查找当前目录下以txt结尾的所有文件
find ./ -name "*.txt" -print |
(2)根据文件的所属关系进查找
-user username:查找属主为username的文件
-group groupname:查找数组为group的文件
-uid UID:查找属主为UID的文件
-gid GID:查找属组为GID的文件
-nouser :查找没有属主的文件
-nogroup:查找没有数组的文件
使用示例:查找/etc下没有属主的文件
find /etc -nouser -print |
(3)根据文件类型进行查找
-type filetype
filetype有:
f:普通文件 |
b:块设备文件 |
d:目录 |
p:管道文件 |
l:链接文件 |
c:字符设备文件 |
s:套接字文件 |
使用示例:查找/etc目录下没有属主的普通文件
find /etc -nouser -type f -print |
(4).根据文件的大小来查找
-size {+|-}#{K,M,G},可以以K,M,G为单位进行查找
#:查找大小为#的文件
+#:查找文件大小至少为#的文件
-#:查找文件大小至多为#的文件
使用示例:查找/etc下没有属组,大小为至少10k的普通文件
find /etc -nogroup -size +10k -type f -print |
(5)根据时间戳进行查找
-atime day:查找在day天之内被访问过的文件
-ctime day:查找day天之内有改变的文件
-mtime day:查找day天之内有修改的文件
-amin min:查找min分钟之内被访问过的文件
-cmin min:查找min分钟之内被访问过的文件
-mmin min:查找min分钟之内被修改过的文件
使用示例:查找/etc下一个月之内被访问过,没有属主,大小为至多1M的普通文件
find /etc -atime 30 -nouser -size -1M -type f -print |
(6)根据文件的权限进行查找
-perm {/|-} mode
mode:查找文件的权限为mode的文件,例如111查找属,属组,其他用户都有执行权限的文件
/mode:查找任何一类用户满足其中任何一个权限位的文件,例如/111,查找属主,属组,或其他用户之中任意一个具有执行权限的文件
-mode:查找所有用户的所有位都满足的文件,例如-111,查找权限小于111的文件,即每一位用户权限都不能超过1的文件
使用示例:查找/etc下一个月之内被访问过,大小为至多1M,属主,属组,或其他用户其中之一能执行的文件
find /etc -atime 30 -size -1M -perm /111 -print |
(6).组合测试
-a : 与运算逻辑,默认也是这种组合逻辑
-o:或运算逻辑
-not,!:非运算逻辑
使用示例:查找/etc中没有属主或者至少为1M的文件
find /etc -nouser -o -size +1M -print |
(7)根据文件是否为空来查找
-empty
使用示例:查找/etc下的空文件
find /etc -empty -print |
3.action:默认为打印查找到的文件名,也可以通过 -exec command {} \的方式对查找到的文件进行指定操作
-print:打印查找到的文件名,也是默认处理方式
-ls :将查找到的文件使用ls列出
-exec command {} \ :对查找到的每个文件执行command命令
当所要执行的命令要接受较长的命令参数时,要通过管道送给xargs来执行,例如 find ./ -name "*.txt|xarg ls -l -h {} \
使用示例:将/etc下所有以.txt结尾的文件找到并删除之
find /etc -name "*.txt" | xarg rm -f {} \ |
原创文章,作者:zhangbao,如若转载,请注明出处:http://www.178linux.com/56766