Linux find命令

whereis命令用于查找执行档、二进制文件、man说明文件和源代码文件。

locate命令是从updatedb命令生成的索引数据库(/var/lib/mlocate/mlocate.db)中查找目标,只要数据库的记录里包含查找的字符就会列出这条记录,但是要定时运行updatedb命令更新数据库,以保证内容的实时性。

which命令是从系统环境变量的路径中查找。可用于查找可执行文件和别名。

find命令具有更强大的功能。
语法:find [路径] [表达式]
默认路径是当前目录,默认表达式是-print。

(N can be +N or -N or N):
-amin N
-anewer FILE
-atime N
-cmin N
-cnewer FILE
-ctime N
-empty
-false
-fstype TYPE
-gid N
-group NAME
-ilname PATTERN
-iname PATTERN
-inum N
-iwholename PATTERN
-iregex PATTERN
-links N
-lname PATTERN
-mmin N
-mtime N
-name PATTERN
-newer FILE
-nouser
-nogroup
-path PATTERN
-perm [+-]MODE
-regex PATTERN
-wholename PATTERN
-size N[bcwkMG]
-true
-type [bcdpflsD]
-uid N
-used N
-user NAME
-xtype [bcdpfls]
-context CONTEXT

1、用户和群组
查找群组ID为N的文件:
find / -gid N

查找群组名为NAME的文件:
find / -group NAME

查找用户ID为N的文件:
find / -uid N

查找用户名为NAME的文件:
find / -user NAME

查找不存在于/etc/passwd文件内的用户的文件:
find / -nouser

查找不存在于/etc/group文件内的群组的文件:
find / -nogroup

2、时间查找
查找N天内存取过的文件:
find / -atime N

查找N天内改变过状态文件:
find / -ctime N

查找N天内修改过的文件:
find / -mtime N

查找比当前目录下的某个FILE还要新的文件:
find / -newer FILE

查找比当前目录下的某个FILE存取时间更新的文件:
find / -anewer FILE

查找系统中最后N分钟内存取过的文件:
find / -amin N

查找系统中最后N分钟内改变过状态的文件:
find / -cmin N

查找系统中最后N分钟内修改过的文件:
find / -mmin N

3、名称及属性
查找名称为PATTERN的文件:
find / -name PATTERN

查找大小为N的文件:
find / -size N

查找某个类型的文件:
find / -type [bcdpflsD]
b – 块设备文件
c – 字符设备文件
d – 目录
p – 管道文件
f – 普通文件
l – 符号链接文件

4、在查找后执行shell命令
格式:
-exec COMMAND ;
-exec COMMAND {} + -ok COMMAND ;
在find命令后加上-exec,加空格,加要执行的命令或脚本,加一对{},加一个空格和一个\,最后是一个分号。

查找/var/log目录下大小为0的文件并删除:
find /var/log -size 0 -exec rm -rf {} \;