文本查找:
grep,egrep,fgrep
文件查找:
locate:非实时,模糊匹配,查找是根据全系统文件数据库进行的;查找速度快
updatedb:手动生成文件数据库
find:实时、精确、遍历指定目录中的所有文件完成查找,速度慢;支持多种查找标准;
格式:find 查找路径 查找标准 查找到以后的处理动作
查找路径:默认为当前目录
查找标准:默认为指定路径下的所有文件
查找后处理动作:默认为显示
匹配标准:
-name 'FILENAME' :对文件名左精确匹配
例:[root@Ourlab ~]# find /etc -name 'passwd'
/etc/passwd
/etc/pam.d/passwd
支持文件名通配:*、?、[]等
例:[root@Ourlab ~]# find /etc -name '*passwd'
/etc/passwd
/etc/security/opasswd
/etc/pam.d/passwd
-iname 'FILENAME':文件名匹配时不区分大小写
-regex PATTERN:基于正则表达式进行文件名匹配
-user USERNAME:根据属主查找
例:[root@localhost ~]# find /var -user mail
-group GROUPNAME:根据属组查找
例:[root@localhost ~]# find /var -group mail
-uid UID:根据UID查找
-gid GID:根据GID查找
-nouser :查找无属主的文件
-nogroup:查找无属组的文件
-type:根据文件类型查找文件
f:普通文件
例:[root@Ourlab ~]# find /tmp -type f
/tmp/vmware-root/vmware-apploader-2918.log
/tmp/vmware-root/vmware-apploader-3194.log
d:目录文件
例:[root@Ourlab ~]# find /tmp -type d
/tmp
/tmp/keyring-qtWyIv
c:字符设备
b:块设备
l:链接文件
p:管道设备
s:套接字设备
-size:根据文件大小查找文件,默认单位是字节
[+|-]#:表示大于或小于指定的#字节
如:[+|-]#k:表示大于或小于#k.
#k:表示查找大于(#-1)k,小于等于#k大小的文件
#M:表示查找大于(#-1)M,小于等于#M大小的文件
#G:表示查找大于(#-1)G,小于等于#G大小的文件
组合条件:
-a:
-o:
-not:
例:[root@Ourlab ~]# find /tmp -nouser -a -type d
例:[root@Ourlab ~]# find ./ -not \( -user user1 -o -user user2 \) #表示查找属主不是user,也不是user2的文件
根据时间戳查找文件:
-mtime #:距现在时间刚好#天修改过
-ctime #:距现在时间刚好#天改变过
-atime #:距现在时间刚好#天访问过
例:[root@Ourlab ~]# find ./ -atime 5
-atime [-ctime | -mtime][+|-]#:表示距现在是时间#天前或#天内
例:[root@Ourlab ~]# find ./ -atime +5
-mmin #:距现在时间刚好#分钟修改过
-cmin #:距现在时间刚好#分钟改变过
-amin #:距现在时间刚好#分钟访问过
-amin[-cmin | -mmin][+|-]#:表示距现在是时间#分钟前或#分钟内
-perm MODE
MODE:精确匹配权限
/MODE:只要任意一位权限匹配既满足条件
-MODE:文件权限能完全包含此mode时才能符合条件
动作:
-print:显示
-ls:类似ls -l的形式显示每一个文件的详细信息
-ok COMMAND {} \; 每一次操作都需要用户确认
-exec COMMAND {} \;每一处操作不需要用户确认
例:[root@Ourlab test]# find ./ -perm -004 -exec chmod o+w {} \;
课后练习:
1、查找/var目录下属主为root并且属组为mail的所有文件;
[root@localhost ~]# find /var -group mail
2、查找/usr目录下不属于root、bin或student的文件;
[root@Ourlab ~]# find /usr -not \( -user root -o -user bin -o -user student \)
3、查找/etc目录下最近一周内内容修改过且不属于root及student的用户的文件;
[root@Ourlab ~]# find /etc -atime -7 -a -not \( -user root -o -user student \)
4、查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root;
[root@Ourlab ~]# find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
5、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;
[root@Ourlab ~]# find /etc -size +1M >> /tmp/etc.largefiles
6、查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;
[root@Ourlab ~]# find /etc -not -perm /222 -ls
阅读(766) | 评论(0) | 转发(0) |