基本格式:

find 【路径】 【-选项】 【-操作】


一、路径

1. ./ 当前目录

2. ~ 用户家目录

3 ./home 当前目录下的家目录

4. /home /home目录

5. /home/wang/ /home目录下的wang目录


二、选项

1.name选项:

使用文件名('filename')来匹配:可以和其他选项一起使用

# find ./ -name "[A-Z]*" -print

查找当前目录及子目录中文件名以一个大写字母开头的文件

# find /etc -name "host*" -print

查找/etc目录中以host开头的文件

2.perm选项:

使用文件权限来查找文件

# find ./ -perm 755 -print

当前目录下查找文件权限位为755的文件

# find ./ -perm -005

都匹配,如-007就相当于777,-005相当于555

3.prune选项:

查找文件时忽略某个目录。不能与-depth选项同用

# find /home -path '/home/wang' -prune -o -print

查找/home目录中不在wang子目录之内的所有文件

# find test \( -path test/test4 -o -path test/test3 \) -prune -o -print

避开多个文件夹。圆括号表示表达式的结合

# find test \(-path test/test4 -o -path test/test3 \) -prune -o -name "*.log" -print

查找某一确定文件,-name等选项加在-o 之后

4.user和nouser选项:

按文件属主查找文件

# find /etc -user wang -print

在/etc目录下查找文件属主为wang的文件

# find /home -nouser -print

查找/home目录中在/etc/passwd文件中没有有效帐户的文件

5.group和nogroup选项:

按文件所属组查找

# find /etc -group root -print

在/etc目录下查找属于root用户组的文件

# find / -nogroup-print

在根目录查找没有有效所属用户组的所有文件

6.mtime或atime选项:

按照更改时间来查找文件

# find / -mtime -5 -print

在系统根目录下查找更改时间在5天内的文件

# find /var/log -mtime +3 -print

在/var/log目录下查找更改时间在3天前的文件

7.newer选项:

查找比某个文件新或旧的文件

一般形式为:

newest_file_name ! oldest_file_name

其中,!是逻辑非符号

# find ./ -newer log2012.log -print

查找更改时间在比log2012.log文件新的文件

# find -newer log2015.log ! -newer log2016.log

查找更改时间比文件log2015.log新但比文件log2016.log旧的文件

8.type选项:

按照类型查找

# find /etc -type d -print

在/etc目录下查找所有的目录

# find ./ ! -type d -print

在当前目录下查找除目录以外的所有类型的文件

# find /etc -type l -print

在/etc目录下查找所有的符号链接文件

9.size选项:

按照文件长度来查找文件

文件长度既可以用块(block)来计量(只用数字表示即可),也可以用字节来计量(Nc)

# find ./ -size +1000000c -print

查找当前目录x下文件长度大于1 M字节的文件

# find /var/log -size 100c -print

查找/var/log下文件长度恰好为100字节的文件

# find ./ -size +10 -print

查找当前目录下长度超过10块的文件(一块等于512字节)

10.depth选项:

先匹配所有的文件,再在子目录中查找

# find / -name "666" -depth -print

从根目录开始先匹配所有的文件然后再进入子目录中查找一个名为666的文件

11.mount选项:

在当前的文件系统中查找(不进入其他文件系统)

# find ./ -name "*.TXT" -mount -print

查找目录中位于本文件系统中文件名以TXT结尾的文件


三、参数

1.-print 输出到标准输出,常省略

# find /etc -name "host*" -print

查找/etc目录中以host开头的文件,并打印

2.-exec 对匹配到的文件执行shell。语法 -exec 'command'{} \;

# find /var/log/ -type f -name 'mysql*.log' -exec rm -rf {} \;

查找/var/log目录下类型为普通文件的mysql日志,并且删除

3.-ok 与-exec作用相同,只不过是交互式操作

# find /var/log -mtime -3 -ok rm -rf {} \;

查找/var/log下的3天内的文件,以交互的方式删除