find命令用法
1.-name 指定文件名
例:查找/usr目录下的a.txt文件:
find /usr -name a.txt
PS:使用-iname参数可以忽略大小写
2.通配符 *
例:查找/usr目录下以a开头的文件:
find /usr -name a*.txt
3.-prune -o 排除指定的文件或目录
例:在当前目录下查找不是 ot 开头的 txt 文件:
find . -name "ot*" -prune -o -name "*.txt"
例:在当前目录除 git 子目录外查找 txt 文件:
find . -path "./git" -prune -o -name "*.txt"
4.-perm 按照文件权限来查找文件
例:在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件:
find . -perm 755
5.-depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
例:先匹配当前目录所有文件,然后再进入子目录中查找:
find / -name "config.file" -depth
6.-type 指定文件类型
b - 块设备文件,比如磁盘
d - 目录
c - 字符设备文件,比如鼠标键盘网卡
p - 管道文件
l - 符号链接文件
f - 普通文件
例:在/etc目录下查找所有的目录:
find /etc -type d
例:在当前目录下查找除目录以外的所有类型的文件:
find . ! -type d
例:在/etc目录下查找所有的符号链接文件
find /etc -type l
7.-user 按照文件属主来查找文件
例:在$HOME目录中查找文件属主为sam的文件:
find ~ -user sam
8.-group 按照文件所属的组来查找文件
例:在/apps目录下查找属于gem用户组的文件:
find /apps -group gem
-nogroup 查找无有效所属组的文件,即该文件所属的组在 /etc/groups 中不存在
例:find / –nogroup
9.-nouser 查找无有效属主的文件,即该文件的属主在 /etc/passwd 中不存在
例:find /home -nouser
10.-mtime -n +n 按照文件的更改时间来查找文件, -n 表示文件更改时间距现在n天以内,+n 表示文件更改时间距现在 n 天以前
例:在系统根目录下查找更改时间在5日以内的文件:
find / -mtime -5
例:在/var/adm目录下查找更改时间在3日以前的文件
find /var/adm -mtime +3
11.-newer file1 ! file2 查找更改时间比文件 file1 新但比文件 file2 旧的文件
12.-size n[c] 查找文件长度为 n 块的文件,带有 c 时表示文件长度以字节计
例:在当前目录下查找文件长度大于1 M字节的文件:
find . -size +1000000c
例:在/home/apache目录下查找文件长度恰好为100字节的文件
find /home/apache -size 100c
例:在当前目录下查找长度超过10块的文件(一块等于512字节):
find . -size +10
13.-mount:在查找文件时不跨越文件系统 mount 点
例:从当前目录开始查找位于本文件系统中文件名以XC结尾的文件(不进入其他文件系统):
find . -name “*.XC” -mount
14.-follow:如果 find 命令遇到符号链接文件,就跟踪至链接所指向的文件
15.-exec,find 命令对匹配的文件执行该参数所给出的 shell 命令。相应命令的形式为 ’command’ {} ;,注意 {} 和 ; 之间的空格
例:删除文件大小为零的文件:
find ./ -size 0 -exec rm {} ;
例:在/logs目录中查找更改时间在5日以前的文件并删除它们:
find /logs -type f -mtime +5 -exec rm {} ;
16.-ok,和 -exec 的作用相同,只不过以一种更为安全的模式来执行该参数所给出的 shell 命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行
例:在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示:
find . -name "*.conf" -mtime +5 -ok rm { } ;