find命令总结

find命令的基本语法格式:

    find [options] [查找路径] [查找条件] [处理动作]
       查找路径:默认为当前目录
       查找条件:默认为查找指定路径下的所有文件
       处理动作:默认为显示


常用查找条件:

-name  glob_expr  根据文件名查找,支持glob通配符:?, *, [], [^]

-name glob_expr 根据文件名查找,但不区分字符大小写。

-user username  根据用户名查找

-group groupname  根据用户组名称查找

-uid UID  根据用户的UID查找

-gid GID  根据用户的GID查找

-nouser  查找没有属主的文件

-nogroup  查找没有属组的文件

-type TYPE  根据文件类型查找。主要文件类型:f, d, l, b, c, s, p

-size [+|-]SIZE  根据文件的大小查找。常用单位:k, M, G

+SIZE : 表示匹配 x > SIZE 单位大小的文件。例:find –size +5k, 查找当前目录下文件大小大于5k的文件。

-SIZE : 表示匹配 x <= (SIZE - 1) 单位大小的文件。例:find –size -5k, 查找当前目录下文件大小小于等于4k的文件。

SIZE : 表示匹配 (SIZE – 1) < x <= SIZE 单位大小的文件。例:find –size 5k, 查找当前目录下文件大小处于4k和5k之间的文件。


根据时间戳查找(以现在向过去方面为时间轴):

以天为单位(time):

-atime [+|-]num  根据过去的访问时间查找

-mtime [+|-]num  根据过去的修改时间查找

-ctime [+|-]num  根据过去的改变时间查找

以分钟为单位(minute):

-amin [+|-]num  根据过去的访问时间查找

-mmin [+|-]num  根据过去的修改时间查找

-cmin [+|-]num  根据过去的改变时间查找

其中, + :表示过去(num + 1)单位时间之前

-   : 表示过去num单位时间到现在

无符号 : 表示过去 (num + 1) > x >= num 单位时间段


根据权限查找:

-perm [+|-]MODE

MODE :  精确匹配

+MODE :   匹配任何一类用户的任何一位权限。当某类用户的的MODE位为’0’时,表示不检查该类用户的权限。例: –perm +001,匹配其它类用户有执行权限的文件。不检查文件的属主和属组权限,因为对应的MODE位为’0’。

-MODE :   匹配每类用户的权限子集。例: –perm -555,匹配属主,属组和其它类用户都具有读和执行权限的文件。那么MODE为555,755,775,777的文件都匹配。


处理动作

-print    默认动作,将查找到的结果打印在标准输出上。

-ls          以长格式输出查找到的所有文件。

-exec COMMAND {} \;     对查找到的所有文件执行COMMAND命令,其中’{}’是命令参数占位符。find命令把查找到的所有文件一次性地传递给 –exec 所指定的命令,但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现 溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。因此,在某些情况下,可以通过 find | xargs COMMAND 的方式来代替 –exec COMMAND 的方式避免这种问题。因为find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

例:

find –perm –003 –a –type f –exec chmod o-wx {} \;

find –perm –003 –a –type f | xargs chmod o-wx

有些情况必须利用占位符才能完成的,就无法用xargs的方式实现了。例:

find –name “*.doc” –exec mv {} {}x  \;     将当期目录下查找到的所有以后缀”.doc”结尾的文件,改变为以后缀”.docx”结尾。


-ok COMMAND {} \;        以交换的方式,对查找到的所有文件执行COMMAND命令。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章