Linux find命令详解
find命令用来在指定目录下查找文件
语法
find path -option [ -print ] [ -exec -ok command ] {} \;
参数
-
path:查找路径
~ 表示$HOME目录
. 表示当前目录
/ 表示根目录 -
-print:标准输出
-
-exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;,注意{ }和;之间的空格。
-
-ok:和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
-
option:查找方式
option常用选项:
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写 -type filetype:文件类型为符合filetype的文件 -amin n:查找在指定时间被访问过的文件或目录,单位以分钟计算; -cmin n:查找在指定时间**文件状态**被更改过的文件或目录,单位以分钟计算; -mmin n:查找在指定时间**文件内容**被更改过的文件或目录,单位以分钟计算; -atime n:查找在指定时间曾被存取过的文件或目录,单位以24小时计算; -ctime n:查找在指定时间**文件状态**被更改的文件或目录,单位以24小时计算; -mtime n:查找在指定时间**文件内容**被更改过的文件或目录,单位以24小时计算; -perm 按执行权限来查找 -user username:查找属主为username的文件 -group groupname:查找属组为groupname的文件 -nouser:查找无属主的文件,即文件的属主在/etc/passwd中不存 -nogroup:查找无属组的文件,即文件的属组在/etc/groups中不存在 -size n:查找文件大小为n(单位)的文件,b 代表 512 位元组的区块,c 表示字节数,+n表示大于,-n表示小于
示例:
- 按照文件名查找
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
find . -name "*.log" //将目前目录及其子目录下所有延伸档名是 log的文件列出来
-
按照文件类型查找
-type filetype:文件类型为符合filetype的文件
d: 目录c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: socket
find . -type f //将目前目录及其下子目录中所有一般文件列出
-
按照文件更改时间查找(以下+n表示n以前,-n表示n以内)
注:文件状态:文件的基本属性,权限,用户,组,大小,修改时间等-amin n:查找在指定时间被访问过的文件或目录,单位以分钟计算;
-cmin n:查找在指定时间文件状态被更改过的文件或目录,单位以分钟计算;
-mmin n:查找在指定时间文件内容被更改过的文件或目录,单位以分钟计算;
-atime n:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-ctime n:查找在指定时间文件状态被更改的文件或目录,单位以24小时计算;
-mtime n:查找在指定时间文件内容被更改过的文件或目录,单位以24小时计算;
find . -atime -20 //将目前目录及其子目录下所有最近 20 天内被访问过的文件列出
find . -ctime -20 //将目前目录及其子目录下所有最近 20 天内状态被更改过的文件列出
find . -mmin +20 //将目前目录及其子目录下所有最近 20 分钟以前内容被更改过的文件列出
find /var/log -type f -mtime +7 -ok rm {} \; //查找/var/log目录中在7日以前内容被更改的普通文件,并在删除之前询问它们:
- 按照权限查找
-perm 按执行权限来查找
//在当前目录及子目录中,查找属主具有读、写权限,属组和其他用户具有读权限的普通文件
find . -type f -perm 644
//查找用户有读权限,属组有读权限的文件或目录
find ./ -perm /440
find ./ -perm /u+r,g+r
find ./ -perm /u=r,g=r
- 按照属主属组查找
-user username:查找属主为username的文件
-group groupname:查找属组为groupname的文件
-nouser:查找无属主的文件,即文件的属主在/etc/passwd中不存
-nogroup:查找无属组的文件,即文件的属组在/etc/groups中不存在
find / -user root //查找属主为root的文件
find / -group root //查找属组为root的文件
find / -nouser //查找不属于任何属主的文件
find / -nogroup //查找不属于任何属组的文件
-
按照文件大小查找
-size n:查找文件大小为n(单位)的文件,b 代表 512 位元组的区块,c 表示字节数,+n表示大于,-n表示小于
find / -size +10M //查找大于10M的文件
find / -size 7c //查找大小为7字节的文件
find / -size -7G //查找大小于7G的文件