在 Linux 系统下要查找文档,少不了要使用 find 命令。find 可以查找出指定名称、类别、时间、大小、权限的文档,能够很好地使用 find 命令的话,要查找文档就事半功倍了。
命令格式
- find path -option [ -print ] [ -exec -ok command ] {} ;
命令参数解析
path
find 命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
option
经常用到的有下面这些:
-name ’字串’ | 查找文件名匹配所给字串的所有文件,字串内可用通配符 *、?、[ ] |
-lname ’字串’ | 查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符 *、?、[ ] |
-gid n | 查找属于ID号为 n 的用户组的所有文件 |
-uid n | 查找属于ID号为 n 的用户的所有文件 |
-group "字串" | 查找属于用户组名为所给字串的所有的文件 |
-user "字串" | 查找属于用户名为所给字串的所有的文件 |
-empty | 查找大小为 0的目录或文件 |
-path "字串" | 查找路径名匹配所给字串的所有文件,字串内可用通配符*、?、[ ] |
-perm 权限 | 查找具有指定权限的文件和目录,权限的表示可以如711,644 |
-size n[bckw] |
查找指定文件大小的文件,n 后面的字符表示单位,缺省为 b, b: 代表512字节的块 c: 表示字节数 k: 表示 kilo bytes (1024字节) w: 字 (2字节) M: 兆字节(1048576字节) G: 千兆字节 (1073741824字节) |
-type x |
查找类型为 x 的文件, 其中 x 为下列字符之一: b: 块设备文件 c: 字符设备文件 d: 目录文件 p: 命名管道(FIFO) f: 普通文件 l: 符号链接文件(symbolic links) s: socket文件 |
-amin n | 查找n分钟以前被访问过的所有文件 |
-atime n | 查找n天以前被访问过的所有文件 |
-cmin n | 查找n分钟以前文件状态被修改过的所有文件 |
-ctime n | 查找n天以前文件状态被修改过的所有文件 |
-mmin n | 查找n分钟以前文件内容被修改过的所有文件 |
-mtime n | 查找n天以前文件内容被修改过的所有文件 |
将搜索结果输出到标准输出 | |
-prune | 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略 |
-folow | 如果find命令遇到符号链接文件,就跟踪至链接所指向的文件 |
-exec | find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } ;,注意{ }和;之间的空格。 |
-ok | 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行 |
参数组合
该命令中的寻找条件可以是一个用逻辑运算符 not、and、or 组成的复合条件。逻辑运 算符 and、or、not 的含义为:
and | 逻辑与,在命令中用“-a”表示,是系统缺省的选项,表示只有当所给的条 件都满足时,寻找条件才算满足 |
or | 逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满足 时,寻找条件就算满足 |
not | 逻辑非,在命令中用“!”表示。该运算符表示查找不满足所给条件的文件 |
使用举例
在当前目录查找 以.log结尾的文件。 ". "代表当前目录
- find . -name "*.log"
超找48小时内修改过的文件
- find -atime -2
查找/opt/soft/test/目录下 权限为 777的文件
- find /opt/soft/test/ -perm 777
在root以及子目录查找不包括目录/root/bin的,greek用户的,文件类型为普通文件的,3天之前的名为test-find.c的文件,并将结构输出
- find / -name "test-find.c" -type f -mtime +3 -user greek -prune /root/bin -print
(完)
本文作者: chenishr
本文标题:《Linux find 命令学习记录》
本文地址: http://blog.chenishr.com/?p=214
©版权所有,除非注明, 永在路上文章均为原创,转载请以链接形式注明出处和作者细信息。