您的位置:首页 > 运维架构 > Linux

【linux】linux下find指令的用法总结

2016-05-30 15:04 387 查看
前言:
先阐述下find指令是干嘛的,为什么要来研究他呢?
find指令是Linux下一个很重要的操作,因为linux是一个“一切皆文件”的操作系统,find(查找文件)指令就尤为重要了,在windows操作系统下,我们查找一个文件可以直接在计算机中搜索文件,但是linux操作系统的文件是不带后缀的,同样,Linux下的find功能相对与windows来说,强大了很多。

Linux下的查找指令有多个,下面我们主要讲下locate和find两个指令

locate指令是对其生成的数据库进行遍历(生成数据库的命令(updatedb)).这一特性决定了用locate查找文件的速度会很快,那么locate速度既然能够快速的查找,那为什么还需要find指令呢?因为locate指令只能对文件进行模糊匹配,精确度不是很高。
#locate的简单操作选项:
-i //查找文件的时候不区分大小写 比如:locate -i tmp
-n //只显示查找结果的前N行 比如:locate -n 5 t

切入我们的正题:
find指令的用法总结:
根据文件名或正则表达式匹配搜索

(1),通过文件名查找
操作选项:-name
操作举例:先看下我们的当前目录使用pwd指令,然后在当前目录下mkdir一个文件tmp,然后使用find ./ -name tmp指令就可以找到tmp文件了,使用find ./ -name 'tmp*'可以查找所有包含tmp的文件。
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/80/5B/wKiom1c-fRfwLewaAABn2wptlQE123.png" title="1.png" alt="wKiom1c-fRfwLewaAABn2wptlQE123.png" />650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/80/5B/wKiom1c-fpvTt6FGAAA3XAOelpU141.png" title="2.png" alt="wKiom1c-fpvTt6FGAAA3XAOelpU141.png" /> (2)通过正则表达式查找
操作选项:!

操作举例:!故名思意,就是否定一个查找条件的,与逻辑-not非类似,
find ./ ! '*.c' -print查找文件名不为.c的文件,并打印出来
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/80/5B/wKiom1c-hZ7TILrgAADYHxhl4TA177.png" title="31.png" alt="wKiom1c-hZ7TILrgAADYHxhl4TA177.png" />

其他正则表达式还有如下一些:
-a 与条件
-o 或条件
-not 非条件(此参数的功能类似于否定参数‘!’)
2.根据文件大小查找

-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。

b——块(512字节); c——字节; w——字(2字节);

k——千字节 ; M——兆字节; G——吉字节。

操作选项:-size -n
操作举例:find ~ -size -100k查找小于100k的文件
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/80/59/wKioL1c-iQnxOfThAAD1FxmB8wM193.png" title="4.png" alt="wKioL1c-iQnxOfThAAD1FxmB8wM193.png" />

操作选项:-size +n

操作举例:find ~ -size +100k查找小于100k的文件
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/80/5C/wKiom1c-iMGwZSySAAA03IfZmbM838.png" title="5.png" alt="wKiom1c-iMGwZSySAAA03IfZmbM838.png" />

操作选项:-size n

操作举例:find ~ -size 100k查找为100k的文件
我的系统下没有等于100k的文件。

3.根据文件深度查找

操作选项:maxdepth

操作举例:find -maxdepth 2 -name tmp在深度为2的目录中查找文件tmp
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/80/5C/wKiom1c-i1GDL9zhAAA7sP8mmRQ142.png" title="6.png" alt="wKiom1c-i1GDL9zhAAA7sP8mmRQ142.png" />

操作选项:mindepth

操作举例:find -mindepth 1 -maxdepth 3 -name tmp在深度为1至3中查找文件tmp
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/80/5C/wKiom1c-jH_Dfa-LAACpBsxuHpI928.png" title="7.png" alt="wKiom1c-jH_Dfa-LAACpBsxuHpI928.png" />

4.按文件权限查找
操作选项:

-perm 按照文件权限查找
-user (或者是-uid n n是用户账号的ID) 按照文件所有人查找
-group (或者是-gid n n是组名的ID)按照文件的所属组查找
操作举例:find -type f -perm 777
find -type f -user 777
find -type f -group 777(这里就不一一截图了,看了上面那么多想必大家都会了)

5.按文件类型查找
文件类型 类型参数
普通文件 f
符号文件 l
目 录 d
字符设备 c
块设备 b
套接字 s
管道文件 p
操作选项:-type

操作举例:find . -type p、find . =type f等等

6.根据文件时间查找
Linux文件系统中的三种时间戳:
▲访问时间(-atime):用户最近一次访问文件的时间;
▲修改时间(-mtime):文件内容最后一次被修改的时间。
▲变化时间(-ctime):文件元数据(metadata,例如权限或所有权)最后一次改变的时间。


操作选项:-atime 、-mtime 、-ctime(用+、-来表示大于和小于)

操作举例:find ./ -atime -1、find ./ -atime +1、find ./ -mtime -2、find ./ -ctime等等
特殊:find ./ -newer tmp ----> 查找比test.c还要新的文件

7.find与xargs结合使用
xargs参数 将标准输入转换成命令行参数
操作选项:-atime 、-mtime 、-ctime(用+、-来表示大于和小于)

操作举例:find -type f -name "*.txt" -print0 |xargs -0 rm -f(将找到的文件删除,xargs -0将\0作为 输入定界符);
find -type f -name "*.c" -print0 |xargs -0 -1(统计所有C程序文件的行数)

本文出自 “滴水” 博客,请务必保留此出处http://10740329.blog.51cto.com/10730329/1775362
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: