linux命令:find文件查找工具 locate命令查找
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux命令:find文件查找工具 locate命令查找相关的知识,希望对你有一定的参考价值。
find命令简介:
实时、精确、支持众多查找标准
遍历指定目录中的所有文件完成查找,速度慢;
1.命令格式:
locate filename 直接跟需要查找的文件 eg locate passwd 系统文件数据库中所有
包含passwd的文件。
find 查找路径 查找标准 查找到以后的处理动作
查找路径:默认为当前目录
查找标准:默认为指定路径下的所有文件
处理动作:默认为显示到屏幕上
eg:find /etc -name passwd 表示在etc目录下查找名字为passwd的文件
2.命令功能:
locate:(查找命令)
非实时,模糊匹配,查找是根据全系统文件数据库进行的;
# updatedb, 手动生成文件数据库
速度快
find:
实时
精确
支持众多查找标准
遍历指定目录中的所有文件完成查找,速度慢;
3.命令参数:
-name ‘FILENAME‘:对文件名作精确匹配
文件名通配:
*:任意长度的任意字符
?
[]
-iname ‘FILENAME‘: 文件名匹配时不区分大小写
-regex PATTERN:基于正则表达式进行文件名匹配
-user USERNAME: 根据属主查找
-group GROUPNAME: 根据属组查找
-uid UID: 根据UID查找
-gid GID: 根据GID查找
-nouser:查找没有属主的文件
-nogroup: 查找没有属组的文件
-type find /tmp -type d 查找/tmp下的目录文件包括/tmp本身
f: 普通文件
d:目录文件
c:字符设备文件
b:块设备文件
l:链接文件
p:管道设备文件
s:套接字设备文件
-size [+|-] +10k表示大于10k的文件 -10k表示小于10k的文件
find /tmp -size 10k 表示查找/tmp下的大小为10k的文件
默认没指定单位的话,为字节b
1k 所有小于1k的都会被匹配到,1M 所有小于1M都会被匹配到
#k k=kb #表示数字 k为小写
#M M=Mb #表示数字 M大写
#G G=Gb #表示数字 G大写
组合条件: 如果查找时没有指定组合关系,默认为与关系
find /tmp -nouser -a -type d -ls
find /tmp -not -type d 查找非目录的文件
-a:与
-o:或
-not:非
eg: 查找/tmp目录下,不是目录,并且还不能为套接字类型的文件;
find /tmp -not -type d -a -not -type s
eg: 查找/tmp/test目录下,属主不是user1,也不是user2的文件;
find /tmp -not -user user1 -a -not -user user2
*相当于 find /tmp -not \( -user user1 -o -user user2 \)
* 谨记:()左右需要空格符隔开
按时间天数计算:
-mtime 修改时间
-ctime 改变时间
-atime 访问时间
[+|-]# #表示数字 +5表示超过5天 -5表示在五天内
按分钟数计算:
-mmin
-cmin
-amin
[+|-]# #表示数字 +5表示超过5分钟 -5表示5分钟内
-perm MODE:精确匹配 -perm 644 表示精确匹配,必须是644权限
/MODE: 任意一位匹配即满足条件 -perm /644表示只要有一位符合就可以
-MODE: 文件权限能完全包含此MODE时才符合条件
-644
644: rw-r--r--
755: rwxr-xr-x
750: rwxr-x---
find ./ -perm /022 表示组或者其他人有写权限 0表示不做匹配.
find ./ -perm -001 查找其他用户有执行权限的文件
动作:
-print: 显示(-print也是属于默认动作,即不指定动作默认就是显示)
-ls:类似ls -l的形式显示每一个文件的详细
-ok COMMAND {} \; 每一次操作都需要用户确认 {}表示引用前面所找到的文件
-exec COMMAND {} \;每一次操作不需要用户确认 {}表示引用前面所找到的文件
find ./ -type d -ok chmod +x {} \; 表示找到目录文件并赋予执行权限
find ./ -perm -020 -ok mv {} {}.new \; 找到当前目录下属组具有写权限的文件,并 修改其文件名为 原文件.new 。
4.命令实例:
1、查找/var目录下属主为root并且属组为mail的所有文件;
find /var -user root -a -group mail
[[email protected] test]# find /var -user root -a -group mail
/var/spool/mail
2、查找/usr目录下不属于root,bin,或student的文件;
find /usr -not -user root -a -not -user bin -a -not -user student
或者 find /usr -not \( -user root -o -user bin -o -user student \) 括号左右必须有空格
[[email protected] usr]# find /usr -not \( -user root -o -user bin -o -user student \)
/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache
[[email protected] usr]# find /usr -not -user root -a -not -user bin -a -not -user student
/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache
3、查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件;
find /etc -mtime -7 -a -not \( -user root -o -user student \)
或者 find /etc -mtime -7 -a -not -user root -a -not -user student
4、查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主
属组均修改为root;
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
5、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;
find /etc -size +1M >> /tmp/etc.largefiles
[[email protected] ~]# find /etc -size +1M >> /tmp/etc.largefiles
[[email protected] ~]# cat /tmp/etc.largefiles
/etc/selinux/targeted/modules/active/policy.kern
/etc/selinux/targeted/policy/policy.24
6、查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;
find /etc -not -perm /222 -ls
[[email protected] ~]# find /etc -not -perm /222 -ls
493 4 -r--r----- 1 root root 4002 3月 2 2012 /etc/sudoers
2279 4 ---------- 1 root root 2541 10月 22 23:10 /etc/shadow
960 4 -r--r--r-- 1 root root 460 8月 17 2013 /etc/dbus-1/system.d/cups.conf
523 172 -r--r--r-- 1 root root 172980 10月 10 08:25 /etc/pki/ca-trust/extracted/java/cacerts
519 308 -r--r--r-- 1 root root 314336 10月 10 08:24 /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
521 184 -r--r--r-- 1 root root 185220 10月 10 08:25 /etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem
520 228 -r--r--r-- 1 root root 232342 10月 10 08:24 /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
522 184 -r--r--r-- 1 root root 185023 10月 10 08:25 /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem
51 4 ---------- 1 root root 2415 10月 22 23:10 /etc/shadow-
43 4 ---------- 1 root root 829 10月 22 23:10 /etc/gshadow-
1091 4 -r-xr-xr-x 1 root root 2134 11月 24 2013 /etc/rc.d/init.d/lvm2-lvmetad
1092 4 -r-xr-xr-x 1 root root 2665 11月 24 2013 /etc/rc.d/init.d/lvm2-monitor
1090 4 -r-xr-xr-x 1 root root 1340 11月 24 2013 /etc/rc.d/init.d/blk-availability
129 4 ---------- 1 root root 841 10月 22 23:10 /etc/gshadow
1149 4 -r--r--r-- 1 root root 324 11月 22 2013 /etc/ld.so.conf.d/kernel-2.6.32-431.el6.i686.conf
962 4 -r--r--r-- 1 root root 146 8月 17 2013 /etc/pam.d/cups
本文出自 “学linux历程” 博客,请务必保留此出处http://woyaoxuelinux.blog.51cto.com/5663865/1865216
以上是关于linux命令:find文件查找工具 locate命令查找的主要内容,如果未能解决你的问题,请参考以下文章