linux 中find 常用示例解析
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path…] [expression]
其实[-H] [-L] [-P] [-D debugopts] [-Olevel]这几个选项并不常用(至少在我的日常工作中,没 有用到过),上面的find命令的常用形式可以简化为
find [path…] [expression]
find 命令的参数:
path:find命令查找文件的目录路径 例如:.表示当前路径,/表示根路径
expression:expression 可以分为–“options[-print-exec-ok…]
-options,find命令的常用选项,
-print,find命令将匹配的文件输出到标准输出
-exec, find命令对匹配的文件执行该参数所给出的shell命令,相应命令形为‘command’{}\
例如:find ./ -size 0 -exec rm {} \; 删除当前目录下文件大小为零的文件。
-ok,和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在 执行每一个命令之前,都会给出提示,让用户来确定是否执行。
find . -name "*.conf" -mtime +5 -ok rm { } \; 在当前目录中查找所有文件名 以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示
Find命令的常用选项和实例
-name 按文件名字查找
例如:find /etc -name "filename" 在目录etc下查找文件名为filename的文件
-perm 按照文件权限来查找文件
例如:find . -perm 755 -print 在当前目录中查找文件权限为755的文件
-user 按照文件属主来查找文件
例如:find ~ -user test -print 在$HOME目录中查找属主为test的文件
-group 按照文件属主来查找文件
例如:find /etc -group jere -print 在/etc 目录中查找属于jere用户组的文件
-mtiem -n +n 按照文件的的更改时间来查找文件,-n表示文件更改是啊就距现在n天以内, +n 表示文件的更改时间距现在n天以前。
例如:find / -mtime -5 -print 在系统根目录下查找更改时间再5日内的文件
find /var/adrm -mtime +3 -print 在/var/adrm 下更改时间大于三天的文 件
-nogroup 查找无有效所属组的文件,即该文件所属组在/etc/groups 中不存在
例如:find / -nogroup -print
-nouser 查找无有效属主的文件,即在该文件的属主宰/etc/passwd 中不存在
例如:find / -nouser -print
-newer file1 !file2 查找更改时间比文件file1新但是比文件file2旧的文件
-type 查找某类型的文件, 诸如: b-块设备文件 d-目录 c-字符设备文件 p-管道 文件 l-符号链接文件 f-普通文件
例如:find /etc -type d -print 在/etc目录下的所有的目录
find . !-type d -pint 在当前目录下查找除目录以为的所有文件
-size n: 查找文件长度为n块的文件,带有c时表示文件长度以字节计
例如:find -size +1000000c -print 在当前目录下查找文件长度大于1M的文件
find /home/apache -size 100c -pint 在/home/apache/目录下查找文件长度恰好是100字节的文件
find . -size +10 -print 在当前目录中查找文件大小为10块的文件(一块512字节)
-depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
例如:find / -name ”nginx“ -depth -print 他将首先匹配所有的文件,然后再进入子目录查找
-mount 在查找文件时不跨越文件系统mount点
例如:find 。 -name ”tst“ -mount -print 从当前目录中开始查找位于本文件系统上的tst文件,不跨越文件系统
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。