find 命令备忘

来源:互联网 发布:速特软件站 编辑:程序博客网 时间:2024/04/28 19:59

比如 find . -name "*.jsp"。如果 find 命令后面没有参数,则会遍历当前目录。

常用参数有:

-maxdepth M 最大深度
-mindepth N 最小深度
通常用这两个参数结合使用,可以定位到某一级目录,比如
hash 后的用户目录 /data/8d/2f/user/ 这种格式可以用:find /data -maxdepth 4 -mindepth 4
在 /data 目录下查找用户 dudu 的目录(可能不小心挪到一个非 hash 算出来的目录了),
find /data -maxdepth 4 -name dudu -type d

-type TYPE 类型,常用的有 f 普通文件,d 目录
-name PATTERN 文件名,比如 *.jsp,不包含路径部分
-path PATTERN 和 -name 对应,路径名满足条件的
比如当前目录下可能有很多用户的目录,但我们只想看他们的 images 目录里的 cache 文件(假设 cache 是咱们自己的一个文件,里面写着该目录里的文件的一些属性),可以
find /data -path */images/* -name "*.cache"

另外 -name 和 -path 中的通配符分别为 ? 和 *

-regex PATTERN
这个比 -name 和 -path 支持的更强大,可以写比较复杂的正则表达式,比如查找所有完全由数字组成的目录
find /data -regex ".*/[0-9]+"

多个条件可以进行逻辑运算,or 用 -o,比如
find /data -type d /( -name "images" -o -name "log" /)

默认情况下,find 执行的结果是打印路径名,find 强大之处还在于,可以对这个文件或目录进行一些操作,比如
find /data -type d /( -name "images" -o -name "log" /) -exec chmod 700 {} /;
其中 {} 指代结果中的每一条,结尾的 [空格]/; 是必须要的,find 用它来知道 -exec 后面的命令结束了。