文件名查找命令:find,可以精确的查找,可以指定查找路径,为实时查找
在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件,功能很强大。
格式为: find [查找路径] [查找条件] [查找动作]
说明:find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作
Ⅰ查找条件:
-name “FILENAME” 以文件名称查找 如: #find /etc -name 'passwd'
-iname “FILENAME” 不区分大小写进行文件名查找
-user 用户名 根据用户名查找 如: #find /var -user root
-group 组名 根据属组来查找
-gid GID 根据GID号来查找
-uid UID 根据UID号来查找
-nouser 查找没有属主的文件
-nogroup 查找没有属组的文件
-regex " " 支持正则表达式 如:#find /etc -regex "pas.*"
-iregex " " 不区分大小写
㈠多条件查找,就要使用到逻辑关系:
-a 表示并关系,相当于and,逻辑与
如:#find /tmp -user root -a -group root ---> 查找tmp目录下属主属组都是root的文件
-o 表示或关系,相当于or,逻辑或
! 表示非关系,相当于not
说明:当使用很多的逻辑选项时,可以用括号把这些选项括起来
例子:1、查找/usr目录下不属于root,bin,或student的文件;
#find /usr -not \( -user root -a -user bin -user student \)
2、查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件
#find /etc -mtime -7 -not \( -user root -a -user student \)
3、查找当前系统上没有属主或者属组且最近1天内曾经被访问过的文件,并将其属组均修改为root;
#find / \( -nouser -o -nogroup \) -a -atime -1
4、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;
#find /etc \( -size +1 -a \) > /tmp/etc.largefiles
㈡ 根据文件类型查找:
-type b 查找类型为块设备的文件
c 字符设备文件
d 目录文件
p 管道
f 普通文件
l 连接文件
如:#find /var -type d ---> 查找var目录下所有的目录文件
㈢根据文件大小查找: -size后面接文件的大小,默认为字节,单位有K,M,G
-size 大小
如:#find /etc -size 1K 查找文件在0k--1k之间的
#find /etc -size +2K 查找文件大于2K的文件
#find /etc -size -2K 查找文件小于2K的文件
㈣根据时间来查找:
按天查找:-mtime 修改时间 -atime 访问时间 -ctime 改变时间
如果时间前有+号,则3天之前,-3为3天之内 如:#find /etc -atime 3
按分钟查找: -amin -mmin -cmin
根据权限查找: -perm ,如果后面直接跟权限大小,为精确匹配
/ 表示任何一位匹配都行
- 所有的都得匹配
如:查找/etc目录下所有都木有写权限的文件;
#find /etc -not -perm /222
Ⅱ处理动作:
-print 默认的动作,表示显示
-ls 详细显示找到的结果 如:#find /etc -not -perm /222 -ls
-ok 命令名 {} \; 执行命令并且提示 如:#find /etc -not -perm /222 -ls -lh {} \;
-exec 命令名 {} \; 执行命令并且不予提示
如: #find / -nouser -a -nogroup -exec chown root:root {} \;