您的位置:首页 > 其它

find命令的使用及方法

2013-03-09 22:35 309 查看

文件查找:

locate:非实时,模糊匹配,查找时根据全系统文件数据库进行的 速度快 ,
#updatedb:手动生成文件数据库
   find:实时查找,精确,通过遍历目录中的所有文件完成查找,速度慢
支持众多的查找标准,
查找路径: 默认为当前目录
查找标准: 默认为指定路径下的所有文件
查找到以后的处理运作 默认为显示

匹配标准:

-name FILENAME:对文件名精确匹配
文件名通配
*:任意长度的任意字符
[]:匹配指定范围内的任意单个字符
例:g[ld] gl gd
-iname FILENAME:文件名匹配不区分大小写
-regex PATTERN :基于正则表达式进行文件名查找
-user USERNAME :根据属主查找
-group USERNAME:根据属组查找

-uid UID:根据uid查找
-gid GID: 根据gid查找

-nouser: 查找没有属主的文件
-nogroup:查找没有属组的文件

-type:根据文件类型
-:普通文件 (f)
d: 目录文件
b: 块设备文件 (block)
c: 字符设备文件 (character)
l: 符号链接文件(symbolic link file)
p: 命令管道文件(pipe)
s: 套接字文件(socket)
-size
#M:nM
[+|-]#k::[大于|小于]nk
+10k:大于10k 10k:9-10k
#G: nG

组合条件:

-a:与 (默认 优先级次之)
-o:或
-not:非
-not -type d:非目录文件 优先级最高
\( \):分组
-mtime:最近一次的修改时间,单位为天数
-ctime:最近一次的改变时间,单位为天数
-atime:最近一次的访问时间,单位为天数
[+|-]#
-5:离现在5天之内访问过
+5:5分钟之前
-cmin:最近一次改变的时间,单位为分钟
-amin:最近一次访问的时间,单位为分钟
-mmin:最近一次修改的时间,单位为分钟
[+|-]#

-perm MODE
-mode:每一位权限必须精确匹配.文件权限完全包含mode才能显示
/mode:任意一位匹配即满足条件

运作:

-print:显示
-ls:类似ls -l的形式显示每一个文件的详细
-ok COMMAND {}\:每一次操作都需要用户确认
-exec COMMAND {} \:不需要用户确认
find ./ -perm -020 -exec mv {} {}.new \:用户改为写权限,重命名{}.new
{}表示由find找到的内容

例:

1、查找/var目录下属主为root并且属组为mail的所有文件;
find /var -user root -group mail
用find命令先找出/var,再查找属主为root且属组为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 \)
两种方法,找出不属于root、bin、student的文件
3、查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件;

find /etc -mtime -7 -not \ ( -user root -o -user student \)
find /etc -mtime -7 -not -user root -a -not -user student
首先,使用find命令查找/etc,然后是修改时间为mtime ,最近一周,所以小于7天为“-7”不属于root和student的用户的文件

4、查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root;
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
没有属主或没有属组为 “-nouser -o -nogroup” 并且最近一天曾被访问“-a -atime -1”
修改属主属组为root,使用chown命令。{}表示由find找到的内容

5、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;
find /etc -size +1M >> /tmp/etc.largefiles
首先使用find命令查找/etc,大于1M ,是“-size +1M”写入/tmp/etc.largefiles文“>> /tmp/etc.largefiles”
6、查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;
find /etc -not -perm /222 -ls
用户没有写权限,使用
-perm MODE
-mode:每一位权限必须精确匹配.文件权限完全包含mode才能显示
/mode:任意一位匹配即满足条件

所以是“-not -perm /222,”并查看使用“-ls”命令

本文出自 “linux” 博客,请务必保留此出处http://weihong.blog.51cto.com/6655355/1151001
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: