1.查找条件:根据文件名称查找时是严格区分字母大小写的
-name "文件名称": 支持使用globbing
*
?
[]
[^]
应用实例:
1).查看/etc目录下有多少passwd文件:
[root@xiaomazi ~]# [root@xiaomazi ~]# find /etc -name "passwd" /etc/pam.d/passwd /etc/passwd [root@xiaomazi ~]#
2).查看/etc目录下所有以passwd开头的文件:
[root@xiaomazi ~]# find /etc -name "passwd*" /etc/pam.d/passwd /etc/passwd- /etc/passwd [root@xiaomazi ~]#
3).查看/etc目录下所有以passwd结尾的文件:
[root@xiaomazi ~]# find /etc -name "*passwd" /etc/pam.d/passwd /etc/passwd /etc/security/opasswd [root@xiaomazi ~]#
2.-iname "文件名称":查找时不区分字符大小写
应用举例:
1).查找/etc下所有以passwd开头的文件(并不区分大小写):
[root@xiaomazi ~]# touch /etc/Passwd -->创建测试文件 [root@xiaomazi ~]# find /etc -iname "passwd*" /etc/pam.d/passwd /etc/passwd- /etc/passwd /etc/Passwd [root@xiaomazi ~]# rm -rf /etc/Passwd 注意不要再/etc目录下随便创建文件吆.
3. 根据属主属组来查找:
-user UserName: 根据属主查找
-group GroupName: 根据属组查找
应用举例:
1).查找文件的属主是hadoop用户的文件:
[root@xiaomazi ~]# su - hadoop [hadoop@xiaomazi ~]$ cp/etc/fstab/tmp/-->注意以谁的身份复制文件,文件的属主属组就是谁的. [hadoop@xiaomazi ~]$ ls-l /tmp/ total 28 -rw-r--r-- 1 hadoop hadoop 921 Feb 26 18:14 fstab [hadoop@xiaomazi ~]$ [root@xiaomazi ~]# find /tmp -user hadoop /tmp/fstab [root@xiaomazi ~]#
2).查找文件的属组是hadoop用户的文件:
[root@xiaomazi ~]# find /tmp -group hadoop /tmp/fstab [root@xiaomazi ~]#
4.根据UID/GID来查找:
-uid UID
-gid GID
如果我将fedora用户删除,没有加选项-r,就不会删除用户文件的;如果文件的属主属组不在了,会发生什么问题呢?但是,如果此前不确定用户名,也可以使用uid的;
应用举例:
1).查找/tmp目录下uid是501的所有文件:
[root@xiaomazi ~]# useradd fedora -->创建用户 [root@xiaomazi ~]# su - fedora -->切换到fedora用户 [fedora@xiaomazi ~]$ cp/etc/inittab/tmp/-->以fedora用户来复制文件 [fedora@xiaomazi ~]$ ls-l /tmp/ total 28 -rw-r--r-- 1 hadoop hadoop 921 Feb 26 18:14 fstab -rw-r--r-- 1 fedora fedora 884 Feb 26 18:22 inittab [fedora@xiaomazi ~]$ exit logout [root@xiaomazi ~]# userdel fedora -->模拟删除用户 [root@xiaomazi ~]# ls -l /tmp/ total 28 -rw-r--r-- 1 hadoop hadoop 921 Feb 26 18:14 fstab -rw-r--r-- 1 501 501 884 Feb 26 18:22 inittab -->注意:现在属主属组属于501 [root@xiaomazi ~]# find /tmp -user fedroa -->这是找不到的啦! find: `fedroa‘ is not the name of a known user [root@xiaomazi ~]# find /tmp -uid 501 -->假设我们知道fedora的uid,就可以全局范围的查找fedora的文件了. /tmp/inittab [root@xiaomazi ~]#
[root@xiaomazi ~]# useradd fedora [root@xiaomazi ~]# su - fedora [fedora@xiaomazi ~]$ cp/etc/inittab/tmp/ [fedora@xiaomazi ~]$ ls-l /tmp/ total 28 -rw-r--r-- 1 hadoop hadoop 921 Feb 26 18:14 fstab -rw-r--r-- 1 fedora fedora 884 Feb 26 18:22 inittab [fedora@xiaomazi ~]$ exit logout [root@xiaomazi ~]# userdel fedora -->模拟删除用户 [root@xiaomazi ~]# ls -l /tmp/ total 28 -rw-r--r-- 1 hadoop hadoop 921 Feb 26 18:14 fstab -rw-r--r-- 1 501 501 884 Feb 26 18:22 inittab -->注意:现在属主属组属于501 [root@xiaomazi ~]# find /tmp -user fedroa -->这是找不到的啦! find: `fedroa‘ is not the name of a known user [root@xiaomazi ~]# find /tmp -uid 501 -->假设我们知道Fedora的uid,就可以全局范围的查找Fedora的文件了. /tmp/inittab [root@xiaomazi ~]#
5.根据-nouser、-nogroup: 查找没有属主、属组的文件;
-nouser:查找没有属主的文件,即该文件的属主在/etc/passwd中不存在。
-nogroup: 查找没有属组的文件,即该文件所属的组在/etc/group中不存在。
应用举例:
1).假如说现在就在系统上找没有属主的文件应该怎么样找呢?
[root@xiaomazi ~]# find /tmp -nouser /tmp/inittab [root@xiaomazi ~]#
6.组合条件:
-a: 与,同时满足(可以不写的)
-o: 或,表示一个满足就可以
-not, !:非,取反
应用举例:
1).查找/tmp目录下没有属主或属主为hadoop的文件:
[root@xiaomazi ~]# find /tmp -nouser -o -user hadoop /tmp/inittab /tmp/fstab [root@xiaomazi ~]#
2).查找/tmp目录下属主为hadoop,并且文件以.txt结尾的文件:
[hadoop@xiaomazi ~]$ whoami hadoop -->当前用户 [hadoop@xiaomazi ~]$ cd /tmp/ [hadoop@xiaomazi tmp]$ touch word.doc hello.txt [hadoop@xiaomazi tmp]$ ll -->新建文件以便测试. total 28 -rw-r--r-- 1hadoop hadoop 921Feb 2618:14fstab -rw-rw-r-- 1hadoop hadoop 0Feb 2618:58hello.txt -rw-r--r-- 1501501884Feb 2618:22inittab -rw-rw-r-- 1hadoop hadoop 0Feb 2618:58word.doc root用户 [root@xiaomazi ~]# find /tmp -user hadoop -name "*.txt" /tmp/hello.txt [root@xiaomazi ~]#
3).查找/tmp目录下属主为hadoop,并且也不是以.txt结尾的文件:
[root@xiaomazi ~]# find /tmp -user hadoop -a -not -name "*.txt" /tmp/fstab /tmp/word.doc [root@xiaomazi ~]#
4).查找/tmp目录下属主不是hadoop,并且也不是以.txt结尾的文件
I.使用的是-a选项:
[root@xiaomazi tmp]# find /tmp -not -user hadoop -a -not -name "*.txt" /tmp /tmp/inittab /tmp/.ICE-unix [root@xiaomazi tmp]#
II.使用的是-o选项:
[root@xiaomazi tmp]# [root@xiaomazi tmp]# find /tmp -not \( -user hadoop -o -name "*.txt" \) /tmp /tmp/inittab /tmp/.ICE-unix [root@xiaomazi tmp]#
5).查找/tmp目录下属主不是hadoop,或者不是以.txt结尾的:
[root@xiaomazi tmp]# find /tmp -not -user hadoop -o -not -name "*.txt" /tmp /tmp/inittab /tmp/fstab /tmp/word.doc /tmp/.ICE-unix [root@xiaomazi tmp]#
6.根据文件类型查找:
-type: 根据文件类型查找
f: 普通文件
d: 目录
b: 块设备
c: 字符设备
l: 符号链接文件
p: 命名管道
s: 套接字
应用举例:
1).将/tmp目录下的目录显示出来:
[root@xiaomazi tmp]# find /tmp -type d /tmp /tmp/.ICE-unix [root@xiaomazi tmp]#
2).查找/tmp目录下的普通文件显示出来:
[root@xiaomazi tmp]# find /tmp -type f /tmp/inittab /tmp/fstab /tmp/word.doc /tmp/hello.txt [root@xiaomazi tmp]#
7.根据文件大小查找:
-size: 根据文件大小查找
-size [+|-]#Unit
例如:-size +2MB (+表示大于)
常用单位:k, M, G
文件查找的一个比较独特的地方,当我们以某个单位指定以后,只要在单位变化范围内1范围内的变化的都符合条件;
注意:
I.小于:
小于-1M:表示0M以下的所有文件是小于-1M的;
小于-2M:表示1M以下的所有文件是小于-2M的;
小于-3M:表示2M以下的所有文件是小于-3M的;
小于-4M:表示3M以下的所有文件是小于-4M的;
II.大于:
大于+1M:表示1M以上的所有文件是大于+1M的;
III.不加+-号
1M的表示:只要在单位变化范围内1M范围内的变化的都符合条件.
应用举例:
1).查找/var/log目录下的文件是在1M以内的显示出来:
[root@xiaomazi tmp]# find /var/log -size 1M /var/log /var/log/ConsoleKit /var/log/ConsoleKit/history ... /var/log/maillog-20140226 [root@xiaomazi tmp]#
2).查找/var/log目录下的文件是大于1M的显示出来:
[root@xiaomazi tmp]# find /var/log -size +1M [root@xiaomazi tmp]# 没有查到
3).查找/var/log目录下的文件是小于1M的显示出来:
[root@xiaomazi tmp]# find /var/log -size -1M /var/log/spice-vdagent.log /var/log/tallylog /var/log/spooler /var/log/wpa_supplicant.log /var/log/spooler-20140226 /var/log/maillog [root@xiaomazi tmp]#
8.根据时间戳查找:
根据时间戳查找:
以天为单位(time):访问时间
-atime [+|-]#
+: 表示(#+1)天之外被访问过;
-: 表示#天之内被访问过;
无符号:表示短于(#+1)> x >=#天的时间段被访问过;
-mtime:修改时间
-ctime:创建时间
以分钟为单位(min):
-amin [+|-]#
-mmin
-cmin
应用举例:
1).查找/var/log目录下的最近一天内编辑过的文件:
[root@xiaomazi tmp]# find /var/log -atime -1 /var/log /var/log/dmesg /var/log/sa /var/log/sa/sa26 /var/log/maillog /var/log/messages [root@xiaomazi tmp]#
2).查找/var/log目录下刚好在一天内编辑过的文件:
[root@xiaomazi tmp]# find /var/log -atime 1 /var/log /var/log/yum.log /var/log/maillog-20140226 [root@xiaomazi tmp]#
3).查找/var/log目录下刚好在一天之外编辑过的文件:
[root@xiaomazi tmp]# find /var/log -atime +1 /var/log/ConsoleKit/history /var/log/audit/audit.log /var/log/sa/sa09 /var/log/anaconda.storage.log /var/log/maillog-20140226 [root@xiaomazi tmp]#
9.根据权限查找:
根据权限查找:
-perm [+|-]MODE
MODE:精确匹配
+MODE: 任何一类用户的任何一位权限匹配;常用于查找某类用户的某特定权限是否存在;
-MODE: 每类用户的指定要检查的权限位都匹配;
应用举例:
1).查找/var/log目录下权限为600的文件:
[root@xiaomazi tmp]# find /var/log -perm 600 /var/log/audit/audit.log /var/log/spice-vdagent.log /var/log/cron-20140226 /var/log/tallylog /var/log/btmp /var/log/cron /var/log/spooler /var/log/messages-20140226 /var/log/anaconda.log /var/log/secure-20140226 /var/log/anaconda.yum.log /var/log/secure /var/log/spooler-20140226 /var/log/anaconda.syslog /var/log/anaconda.program.log /var/log/anaconda.ifcfg.log /var/log/maillog /var/log/anaconda.storage.log /var/log/messages /var/log/maillog-20140226 [root@xiaomazi tmp]# [root@xiaomazi tmp]# ls -l /var/log -->可以看下的权限的
2).查找/tmp目录下为写的权限的文件,创建文件并测试:
[root@xiaomazi tmp]# mkdir test [root@xiaomazi tmp]# cd test/ [root@xiaomazi test]# touch hello.txt [root@xiaomazi test]# ls hello.txt [root@xiaomazi test]# find ./ -perm +222 ./ ./hello.txt [root@xiaomazi test]#
3).查找/tmp目录下所有其他用户有写的权限的文件:
[root@xiaomazi test]# find ./ -perm 002 [root@xiaomazi test]# --> 没有
4).查找/etc/init.d/目录下的其他用户有执行权限,且文件类型是普通文件的:
[root@xiaomazi test]# find /etc/init.d/ -type f -perm +001 /etc/init.d/rpcsvcgssd /etc/init.d/sandbox /etc/init.d/ntpd ... /etc/init.d/netfs /etc/init.d/autofs [root@xiaomazi test]#
5).查找/tmp/test/目录下至少有一类用户有写权限;
[root@xiaomazi test]# find ./ -perm -444 ./ ./hello.txt [root@xiaomazi test]#
10.
处理动作:
-print:打印在标准输出上;
-ls:以长格式输出各文件信息;
-exec COMMAND {} \; :对查找到的文件执行指定的命令;注意格式要正确:"-exec 命令 {} \;"。注意“{}” 与\;之间有空格
-ok COMMAND {} \; : 交互式的-exec;
{}表示占位符
find把查找到的所有文件一次性地传递给-exec所指定的命令
find | xargs COMMAND 执行一批命令的,
1).查找所有用户都有执行权限,或者其他用户都有写和执行权限:
[root@xiaomazi ~]# chmod o+x /tmp/hello.txt -->给其他用户赋予执行权限 [root@xiaomazi ~]# find /tmp -perm -003 -ls 1048577 4 drwxrwxrwt 4 root root 4096 Feb 26 23:07 /tmp 1049215 4 drwxrwxrwt 2 root root 4096 Feb 26 15:44 /tmp/.ICE-unix 1052213 0 -rw-rw-rwx 1 hadoop hadoop 0 Feb 26 23:07 /tmp/hello.txt [root@xiaomazi ~]#
2).查找其他用户都有写和执行权限,并且类型为普通文件:
[root@xiaomazi ~]# find /tmp -perm -003 -type f -ls 1052213 0 -rw-rw-rwx 1 hadoop hadoop 0 Feb 26 23:07 /tmp/hello.txt [root@xiaomazi ~]#
3).
查找类型为普通文件,并且将查找出来的文件的用户的写、执行权限去掉:
4).
[root@xiaomazi ~]# find /tmp -perm -003 -type f -exec chmod o-wx {} \; [root@xiaomazi ~]# ls /tmp/hello.txt -l -rw-rw-r-- 1 hadoop hadoop 0 Feb 26 23:07 /tmp/hello.txt [root@xiaomazi ~]#
5).查找类型为普通文件,并且将查找出来的文件强行删除,注意如果有目录也会一起都被删除掉的哦:
[root@xiaomazi ~]# find /tmp -perm -003 -type f -exec rm -rf {} \;
6).查找类型为普通文件,并且将查找出来的文件的用户的写、执行权限去掉:
[root@xiaomazi tmp]# find /tmp -perm -003 -type f | xargs chmod o-wx [root@xiaomazi tmp]# ll /tmp/hello.txt -rw-rw-r-- 1 hadoop hadoop 0 Feb 26 23:07 /tmp/hello.txt [root@xiaomazi tmp]#
下面是一些其它的例子:
1、查找/var/目录属主为root且属组为mail的所有文件;
# find /var/ -user root -a -group mail
2、查找/usr目录下不属于root、bin或hadoop的所用文件(两种方法);
# find /usr/ -not -user root -a -not -user bin -a -not -user hadoop
# find /usr/ -not \( -user root -o -user bin -o -user hadoop \)
3、查找/etc/目录下最近一周内其内容修改过的,且不属于root或hadoop的文件(两种方法);
# find /etc/ -mtime -7 -a -not -user root -a -not -user hadoop
# find /etc/ -mtime -7 -a -not \( -user root -o -user hadoop \)
4、查找当前系统上没有属主或属组,且最近1个月内曾被访问过的文件;
# find / \( -nouser -o -nogroup \) -a -atime -30
5、查找/etc/目录下大于1M且类型为普通文件的所有文件;
# find /etc/ -size +1M -a -type f
6、查找/etc/目录所有用户都没有写权限的文件;
# find /etc/ -not -perm +222
所有都没有:相反:任何一个有
所有都有:相反:至少有一个没有
7、查找/etc/目录下至少有一类用户没有写权限;
# find /etc/ -not -perm -222
8、查找/etc/init.d/目录下,所有用户都有执行权限且其它用户有写权限的文件;
# find /etc/init.d/ -perm -113
9、查找系统上的其他用户有执行权限,且文件类型是普通文件的:
# find / -type f -perm +001
正在完善中...
A smile is the most beautiful language!!!
----------------------------------------------------------------------------------------
欢迎纠错哦..
---->小马子
本文出自 “凡事总要想着行” 博客,请务必保留此出处http://xiaomazi.blog.51cto.com/5891742/1364130
原文:http://xiaomazi.blog.51cto.com/5891742/1364130