在Linux上文件查找工具常见的有locate和find,本文在此将只讲find命令。
文件查找命令:locate find对比和优缺点
实时查找:通过遍历所有文件进行条件匹配的方式查找
非实时查找:通过根据索引查找
locate:非实时查找
依赖于索引,而索引构建非常占用资源:索引的创建是在系统空闲时系统自动进行;可以用updatedb命令更新索引
查找速度快
非精准查找
find:实时查找
精准查找 (系统上实时的有就是有没有就是没有)
精确查找 (查找结果绝对符合查找条件才予显示)
查找速度慢
命令用法格式:find [option]...[查找起始路径] [查找条件] [处理动作]
查找路径:默认为当前目录
查找条件:默认为指定路径下所有文件
处理动作:默认为打印至屏幕
查找条件:
-name "文件名称":支持使用globbing字符
*:任意长度的任意字符
?:任意大个字符
[]:指定范围内的任意单个字符
[^]:指定范围外的单个字符
-iname "文件名称":忽略字符大小写 支持使用globbing字符
-user USERNAME:根据文件属主查找
-group GROUPNAME:根据文件数组查找
-uid UID:根据文件UID查找
-gid GID:根据文件GID查找
-nouser:查找没有属主的文件
-nogroup:查找没有数组的文件
组合条件查找:
与:-a,需要多条件同时满足。(当有两个条件时默认就是-a,也就是说-a是可以省略的)
或:-o,满足一个条件即可
非:-not|!,条件取反
-type TYPE:根据文件类型进行查找 (下面所有为都是文件类型得益于Linux的一个理念:一切皆文件,就是说不管你是什么在系统上都把你当一个文件来看)
f:普通文件
d:目录文件
l:符号链接文件
b:块设备文件
c:字符设备文件
s:套接字文件
p:命名管道文件
-size [+|-]#UNIT
+表示大于这个数
- 表示小余这个数
这里需要记住一个法则:
#UNIT: ( #-1 < X <= # )
-#UNIT: ( X <= #-1 )
+#UNIT: ( X > # )
大于0小于等于1的都是1、大于1小于等于2都是2、大于2小于等于3的都是3,具体请看下面的实验截图
#代表一个数字
UNIT代表一个单位 (常用单位:k M G ....)
根据时间戳查找:
以"天"为单位:
-atime [+|-]#
+2:就表示最近一次访问时间在3天之前, ( X >= #+1 )
-2:就表示最近一次访问时间在2天之内(以当前查找为时间点,2天之内被访问的文件) ( X < # )
2: ( # <= X < #+1 )
-mtime [+|-]#
-ctime [+|-]#
这里对atime mtime ctime做个小说明:
(文件的 Access time,atime 是在读取文件或者执行文件时更改的。
文件的 Modified time,mtime 是在写入文件时随文件内容的更改而更改的。
文件的 Create time,ctime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的。 )
以"分钟"为单位:
-amin [+|-]#
-mmin [+|-]#
-cmin [+|-]#
根据权限查找:
-perm [+|1]MODE (MODE就是属主属组other的读、写、执行这三个权限)
MODE:就是与MODE做精确匹配
栗子:find ./ -perm 644 查找当前目录下文件权限是644的文件
+MODE:表示我们查找的文件任何一个用户的任何一个权限只要有一位能匹配就是足够,以单一属主为例,如果文件属主权限是6,我们查找的是4,那么这就算匹配。如果文件属主权限是2,我们查找的是7,那么也算匹配,因为7里面包含2。(这里比上面的大小 时间还绕,如果不能理解,那么只能多练习多思考就好了,博主开始也被绕晕了。。。)
说到这,我们是不是可以定期执行find / -perm +001 -type f 来查找系统上的高危文件了,居然让其他用户有执行权限。。。亲们懂的。。。
栗子:find ./ -perm +222 查找当前目录下属主或者属组或者其他用户的文件只要有一个是写权限的都算匹配正确
-MODE:表示三类用户都必须只有你指定的权限,也就是说三类用户都和你指定的权限都完全匹配才算
栗子:find ./ -perm 644 如果一个文件是600的权限那么不能匹配,如果一个文件的权限是646,那么能匹配,因为最后一个6 是包含4权限的所以算匹配。
处理动作:
-print:默认处理动作
-ls:类似于ls -l
-exec COMMAND {}\;:对查找到的文件执行指定的命令,命令后面的{}表示,查找到什么就引用什么
栗子:find ./ -perm -200 -exec chmod a-w {} \; 查找当前目录下属主有写权限的文件,并去除属主写权限。so easy
-ok COMMAND {} \;这是个交互式的exec,每操作一次就需要你确认下
在-exec或-ok的时候find一次性查找符合条件的所有文件,并一同传给exec或者ok后面的命令,后面是怎么处理需要看命令本身处理方式,所以这里就出现了个缺点,有些命令不接受过长的参数那样就会出现一些变身动作了,具体咋变身还需读者你自己去发现。。这时候我们可以通过管道+xargs来实现了
栗子:find ./ -perm -200 | xargs chmod a-w
下面是一些基础栗子演示
查找/etc目录下文件名以p开头的文件 (由于这些文件太多所以用tail命令只显示最后打印的10个,下文同理)
[[email protected] ~]# find /etc/ -name "p*" | tail /etc/prelink.conf.d /etc/polkit-1 /etc/passwd- /etc/profile.d /etc/passwd /etc/alternatives/pack200 /etc/alternatives/policytool /etc/alternatives/policytool.1 /etc/alternatives/pack200.1 /etc/sysconfig/networking/profiles
查找当前目录下属主为mysql的文件
查找当前目录下属组为mysql的文件
[[email protected] ~]# find ./ -user mysql -ls | tail 7866918 4 drwxr-xr-x 2 mysql mysql 4096 Dec 10 23:59 ./Python-2.7.9/Demo/rpc 7866924 8 -rw-r--r-- 1 mysql mysql 5323 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/nfsclient.py 7866921 4 -rw-r--r-- 1 mysql mysql 1261 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/README 7866927 8 -rw-r--r-- 1 mysql mysql 6632 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/mountclient.py 7866923 28 -rw-r--r-- 1 mysql mysql 27631 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/rpc.py 7866926 4 -rwxr-xr-x 1 mysql mysql 697 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/test 7866920 4 -rw-r--r-- 1 mysql mysql 361 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/MANIFEST 7866925 4 -rw-r--r-- 1 mysql mysql 2629 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/rnusersclient.py 7866919 8 -rw-r--r-- 1 mysql mysql 5047 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/xdr.py 7866922 4 -rw-r--r-- 1 mysql mysql 575 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/T.py [[email protected] ~]# find ./ -group mysql -ls | tail 7866918 4 drwxr-xr-x 2 mysql mysql 4096 Dec 10 23:59 ./Python-2.7.9/Demo/rpc 7866924 8 -rw-r--r-- 1 mysql mysql 5323 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/nfsclient.py 7866921 4 -rw-r--r-- 1 mysql mysql 1261 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/README 7866927 8 -rw-r--r-- 1 mysql mysql 6632 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/mountclient.py 7866923 28 -rw-r--r-- 1 mysql mysql 27631 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/rpc.py 7866926 4 -rwxr-xr-x 1 mysql mysql 697 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/test 7866920 4 -rw-r--r-- 1 mysql mysql 361 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/MANIFEST 7866925 4 -rw-r--r-- 1 mysql mysql 2629 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/rnusersclient.py 7866919 8 -rw-r--r-- 1 mysql mysql 5047 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/xdr.py 7866922 4 -rw-r--r-- 1 mysql mysql 575 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/T.py
查找当前目录下uid为1000的文件
查找当前目录下gid为0的文件
[[email protected] ~]# cat /etc/passwd | grep mysql mysql:x:1000:1000::/home/mysql:/sbin/nologin [[email protected] ~]# find ./ -uid 1000 -ls | tail 7866918 4 drwxr-xr-x 2 mysql mysql 4096 Dec 10 23:59 ./Python-2.7.9/Demo/rpc 7866924 8 -rw-r--r-- 1 mysql mysql 5323 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/nfsclient.py 7866921 4 -rw-r--r-- 1 mysql mysql 1261 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/README 7866927 8 -rw-r--r-- 1 mysql mysql 6632 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/mountclient.py 7866923 28 -rw-r--r-- 1 mysql mysql 27631 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/rpc.py 7866926 4 -rwxr-xr-x 1 mysql mysql 697 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/test 7866920 4 -rw-r--r-- 1 mysql mysql 361 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/MANIFEST 7866925 4 -rw-r--r-- 1 mysql mysql 2629 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/rnusersclient.py 7866919 8 -rw-r--r-- 1 mysql mysql 5047 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/xdr.py 7866922 4 -rw-r--r-- 1 mysql mysql 575 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/T.py [[email protected] ~]# find ./ -gid 0 -ls | tail 7864344 4 drwxr----- 2 root root 4096 May 17 18:59 ./.pki/nssdb 7864338 0 -rw-r--r-- 1 root root 0 May 24 05:13 ./1 7864329 4 -rw-r--r-- 1 root root 17 May 18 16:23 ./.mysqlpassword 7864349 4 -rw-r--r-- 1 root root 3799 May 2 19:33 ./.vimrc 7864336 4 -rw------- 1 root root 769 May 18 01:26 ./.mysql_history 7864325 4 -rw-r--r-- 1 root root 129 Dec 4 2004 ./.tcshrc 7864324 4 -rw-r--r-- 1 root root 176 May 20 2009 ./.bash_profile 7870839 4 -rw------- 1 root root 375 May 24 01:25 ./.Xauthority 7864345 4 -rw-r--r-- 1 root root 1151 May 17 19:03 ./.lnmpinfo 7864334 4 -rw-r--r-- 1 root root 7 May 17 18:07 ./.mdg
查找当前目录下没有属主的文件
查找当前目录下没有数组的文件
[[email protected] ~]# find ./ -nouser -ls | tail 7869393 4 -rwxr-xr-x 1 501 wheel 84 Feb 25 2014 ./ipython-1.2.1/docs/update_version.sh 7869216 4 -rw-r--r-- 1 501 wheel 479 Feb 25 2014 ./ipython-1.2.1/docs/README.rst 7869215 4 -rw-r--r-- 1 501 wheel 771 Feb 25 2014 ./ipython-1.2.1/docs/pycon.ico 7869205 4 -rw-r--r-- 1 501 wheel 2075 Feb 25 2014 ./ipython-1.2.1/docs/make.cmd 7870575 4 -rwxr-xr-x 1 501 wheel 156 Feb 25 2014 ./ipython-1.2.1/setupegg.py 7995768 4 drwxr-xr-x 2 501 wheel 4096 May 20 11:05 ./ipython-1.2.1/setupext 7995771 8 -rw-r--r-- 1 501 wheel 4825 Feb 25 2014 ./ipython-1.2.1/setupext/setupext.py 7995769 4 -rw-r--r-- 1 501 wheel 91 Feb 25 2014 ./ipython-1.2.1/setupext/__init__.py 7995770 4 -rw-r--r-- 1 501 wheel 3059 Feb 25 2014 ./ipython-1.2.1/setupext/install_data_ext.py 7870572 4 -rw-r--r-- 1 501 wheel 2018 Feb 25 2014 ./ipython-1.2.1/README.rst [[email protected] ~]# touch find_test{1,2,3,4,5,6} [[email protected] ~]# chgrp 200 find_test* [[email protected] ~]# find ./ -nogroup -ls | tail 7864340 0 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test1 7870873 0 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test4 7870874 0 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test5 7870871 0 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test2 7870875 0 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test6 7870872 0 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test3
查找/etc目录下 文件名以p开头且属主是root的文件
[[email protected] ~]# find /etc/ -name "p*[0-9]*" -a -user root -ls | tail 6685622 7900 -rw-r--r-- 1 root root 8086845 May 17 18:21 /etc/selinux/targeted/policy/policy.24 6685011 4 drwxr-xr-x 3 root root 4096 Jan 28 2014 /etc/pkcs11 6687472 4 -rw-r--r-- 1 root root 155 Oct 15 2014 /etc/pam.d/polkit-1 6684835 4 -rw-r--r-- 1 root root 451 Apr 28 21:25 /etc/pki/nssdb/pkcs11.txt 6818712 4 drwxr-xr-x 5 root root 4096 May 17 19:16 /etc/polkit-1 6687556 0 lrwxrwxrwx 1 root root 33 May 17 19:19 /etc/alternatives/pack200 -> /usr/java/jdk1.8.0_45/bin/pack200 6687569 0 lrwxrwxrwx 1 root root 43 May 17 19:19 /etc/alternatives/policytool.1 -> /usr/java/jdk1.8.0_45/man/man1/policytool.1 6687568 0 lrwxrwxrwx 1 root root 40 May 17 19:19 /etc/alternatives/pack200.1 -> /usr/java/jdk1.8.0_45/man/man1/pack200.1 [[email protected] ~]# find /etc/ -name "p*[0-9]*" -user root -ls | tail 6685622 7900 -rw-r--r-- 1 root root 8086845 May 17 18:21 /etc/selinux/targeted/policy/policy.24 6685011 4 drwxr-xr-x 3 root root 4096 Jan 28 2014 /etc/pkcs11 6687472 4 -rw-r--r-- 1 root root 155 Oct 15 2014 /etc/pam.d/polkit-1 6684835 4 -rw-r--r-- 1 root root 451 Apr 28 21:25 /etc/pki/nssdb/pkcs11.txt 6818712 4 drwxr-xr-x 5 root root 4096 May 17 19:16 /etc/polkit-1 6687556 0 lrwxrwxrwx 1 root root 33 May 17 19:19 /etc/alternatives/pack200 -> /usr/java/jdk1.8.0_45/bin/pack200 6687569 0 lrwxrwxrwx 1 root root 43 May 17 19:19 /etc/alternatives/policytool.1 -> /usr/java/jdk1.8.0_45/man/man1/policytool.1 6687568 0 lrwxrwxrwx 1 root root 40 May 17 19:19 /etc/alternatives/pack200.1 -> /usr/java/jdk1.8.0_45/man/man1/pack200.1
[[email protected] ~]# find ./ -name "*s*" -a -not -user root -ls | tail 7866881 4 -rw-r--r-- 1 mysql mysql 3965 Dec 10 23:59 ./Python-2.7.9/Demo/tix/samples/SHList1.py 7866893 40 -rw-r--r-- 1 mysql mysql 38406 Dec 10 23:59 ./Python-2.7.9/Demo/tix/tixwidgets.py 7866912 4 drwxr-xr-x 2 mysql mysql 4096 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons 7866914 4 -rwxr-xr-x 1 mysql mysql 2288 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/systemtest.py 7866917 4 -rwxr-xr-x 1 mysql mysql 1515 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/regextest.py 7866916 4 -rw-r--r-- 1 mysql mysql 30 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/patterns 7866913 4 -rwxr-xr-x 1 mysql mysql 1265 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/sortingtest.py 7866924 8 -rw-r--r-- 1 mysql mysql 5323 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/nfsclient.py 7866926 4 -rwxr-xr-x 1 mysql mysql 697 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/test 7866925 4 -rw-r--r-- 1 mysql mysql 2629 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/rnusersclient.py [[email protected] ~]# find ./ -name "*s*" -a ! -user root -ls | tail 7866881 4 -rw-r--r-- 1 mysql mysql 3965 Dec 10 23:59 ./Python-2.7.9/Demo/tix/samples/SHList1.py 7866893 40 -rw-r--r-- 1 mysql mysql 38406 Dec 10 23:59 ./Python-2.7.9/Demo/tix/tixwidgets.py 7866912 4 drwxr-xr-x 2 mysql mysql 4096 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons 7866914 4 -rwxr-xr-x 1 mysql mysql 2288 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/systemtest.py 7866917 4 -rwxr-xr-x 1 mysql mysql 1515 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/regextest.py 7866916 4 -rw-r--r-- 1 mysql mysql 30 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/patterns 7866913 4 -rwxr-xr-x 1 mysql mysql 1265 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/sortingtest.py 7866924 8 -rw-r--r-- 1 mysql mysql 5323 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/nfsclient.py 7866926 4 -rwxr-xr-x 1 mysql mysql 697 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/test 7866925 4 -rw-r--r-- 1 mysql mysql 2629 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/rnusersclient.py
查找当前目录下属主是mysql且文件名有个s或文件名有个s且没有属组的文件
注意:
1、这里的4个条件做了且和或组合,大家仔细看下我两条命令的写法和结果,这地方最好自己理解透,那么find命令的组合查找就搞的差不多了
2、而且这里我没有在find命令最后加-ls而是在前面用ls 后面命令引用起来的,这地方如果用还是带-ls会出意想不到的结果,具体原因-ls 只显示最后一组的结果,如果想显示组合条件的全部结果那么就需要把组合条件括起来。
[[email protected] ~]# ls -l $(find ./ -user mysql -a -name "*s*" -o -nogroup | tail) -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test2 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test3 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test6 -rw-r--r-- 1 mysql mysql 30 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/patterns -rwxr-xr-x 1 mysql mysql 1515 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/regextest.py -rwxr-xr-x 1 mysql mysql 1265 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/sortingtest.py -rwxr-xr-x 1 mysql mysql 2288 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/systemtest.py -rw-r--r-- 1 mysql mysql 5323 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/nfsclient.py -rw-r--r-- 1 mysql mysql 2629 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/rnusersclient.py -rwxr-xr-x 1 mysql mysql 697 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/test [[email protected] ~]# ls -l $(find ./ -user mysql -a -name "*s*" -o -name "*s*" -a -nogroup | tail) -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test2 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test3 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test6 -rw-r--r-- 1 mysql mysql 30 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/patterns -rwxr-xr-x 1 mysql mysql 1515 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/regextest.py -rwxr-xr-x 1 mysql mysql 1265 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/sortingtest.py -rwxr-xr-x 1 mysql mysql 2288 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/systemtest.py -rw-r--r-- 1 mysql mysql 5323 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/nfsclient.py -rw-r--r-- 1 mysql mysql 2629 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/rnusersclient.py -rwxr-xr-x 1 mysql mysql 697 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/test
[[email protected] ~]# ls -l $(find ./ -user mysql -a -name "*s*" -o -nogroup | tail) -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test2 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test3 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test6 -rw-r--r-- 1 mysql mysql 30 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/patterns -rwxr-xr-x 1 mysql mysql 1515 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/regextest.py -rwxr-xr-x 1 mysql mysql 1265 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/sortingtest.py -rwxr-xr-x 1 mysql mysql 2288 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/systemtest.py -rw-r--r-- 1 mysql mysql 5323 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/nfsclient.py -rw-r--r-- 1 mysql mysql 2629 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/rnusersclient.py -rwxr-xr-x 1 mysql mysql 697 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/test [[email protected] ~]# find ./ -user mysql -a -name "*s*" -o -nogroup -ls | tail 7864340 0 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test1 7870873 0 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test4 7870874 0 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test5 7870871 0 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test2 7870875 0 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test6 7870872 0 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test3 [[email protected] ~]# find ./ \( -user mysql -a -name "*s*" -o -nogroup \) -ls | tail 7866914 4 -rwxr-xr-x 1 mysql mysql 2288 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/systemtest.py 7866917 4 -rwxr-xr-x 1 mysql mysql 1515 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/regextest.py 7866916 4 -rw-r--r-- 1 mysql mysql 30 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/patterns 7866913 4 -rwxr-xr-x 1 mysql mysql 1265 Dec 10 23:59 ./Python-2.7.9/Demo/comparisons/sortingtest.py 7866924 8 -rw-r--r-- 1 mysql mysql 5323 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/nfsclient.py 7866926 4 -rwxr-xr-x 1 mysql mysql 697 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/test 7866925 4 -rw-r--r-- 1 mysql mysql 2629 Dec 10 23:59 ./Python-2.7.9/Demo/rpc/rnusersclient.py 7870871 0 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test2 7870875 0 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test6 7870872 0 -rw-r--r-- 1 root 200 0 May 24 05:17 ./find_test3
查找当前目录下文件名不含s且属主不是root的文件 注意:
这里我们先按照常规写法结果是正确的,但是我们用简写方式就出错了,然后简写方式把-a换成-o又正常了,这是为什么?这里我们就要说说德摩根定律
非(P 且 Q)=(非 P)或(非 Q)
非(P 或 Q)=(非 P)且(非 Q)
如果你能理解或者已经知道德摩根定律了那么这地方你就好理解了
[[email protected] FIND_test]# ls -l total 0 -rw-r--r-- 1 mysql root 0 May 24 06:06 find_a_test1 -rwxr-xr-x 1 root root 0 May 24 06:06 find_a_test2 -rwxr-xr-x 1 mysql root 0 May 24 06:06 find_a_test3 -rwxr-xr-x 1 mysql root 0 May 24 06:06 find_b_teet1 -rwxr-xr-x 1 mysql root 0 May 24 06:06 find_b_teet2 -rw-r--r-- 1 root root 0 May 24 06:06 find_b_teet3 [[email protected] FIND_test]# find ./ -not -name "*s*" -a -not -user root ./find_b_teet1 ./find_b_teet2 [[email protected] FIND_test]# find ./ -not \( -name "*s*" -a -user root \) ./ ./find_a_test1 ./find_a_test3 ./find_b_teet3 ./find_b_teet1 ./find_b_teet2 [[email protected] FIND_test]# find ./ -not \( -name "*s*" -o -user root \) ./find_b_teet1 ./find_b_teet2 [[email protected] FIND_test]#
查找当前目录下大于1M的文件(查找大于1M的文件)
查找当前目录下1M大小的文件(查找大于0小于等于1M的文件)
查找当前目录下小余1M的文件(根据上面的说法这里查找的就是大小是0的文件)
查找当前目录下小余2M的文件(查找小于等于1M的文件)
[[email protected] FIND_test]# dd if=/dev/zero of=/tmp/FIND_test/find_a_test1 bs=1405K count=1 1+0 records in 1+0 records out 1438720 bytes (1.4 MB) copied, 0.00142433 s, 1.0 GB/s [[email protected] FIND_test]# dd if=/dev/zero of=/tmp/FIND_test/find_a_test2 bs=900K count=1 1+0 records in 1+0 records out 921600 bytes (922 kB) copied, 0.000971104 s, 949 MB/s [[email protected] FIND_test]# dd if=/dev/zero of=/tmp/FIND_test/find_a_test3 bs=2900K count=1 1+0 records in 1+0 records out 2969600 bytes (3.0 MB) copied, 0.00280346 s, 1.1 GB/s [[email protected] FIND_test]# ls -lh total 5.1M -rw-r--r-- 1 root root 1.4M May 24 06:39 find_a_test1 -rw-r--r-- 1 root root 900K May 24 06:39 find_a_test2 -rw-r--r-- 1 root root 2.9M May 24 06:39 find_a_test3 [[email protected] FIND_test]# find ./ -size +1M -ls 1048686 1408 -rw-r--r-- 1 root root 1438720 May 24 06:39 ./find_a_test1 1048688 2900 -rw-r--r-- 1 root root 2969600 May 24 06:39 ./find_a_test3 [[email protected] FIND_test]# find ./ -size 1M -ls 1048684 4 drwxr-xr-x 2 root root 4096 May 24 06:39 ./ 1048687 900 -rw-r--r-- 1 root root 921600 May 24 06:39 ./find_a_test2 [[email protected] FIND_test]# find ./ -size -1M -ls [[email protected] FIND_test]# find ./ -size -2M -ls 1048684 4 drwxr-xr-x 2 root root 4096 May 24 06:39 ./ 1048687 900 -rw-r--r-- 1 root root 921600 May 24 06:39 ./find_a_test2 [[email protected] FIND_test]#
[[email protected] FIND_test]# touch -a -t 201505051314 find_a_test1 [[email protected] FIND_test]# stat find_a_test1 File: `find_a_test1' Size: 1438720 Blocks: 2816 IO Block: 4096 regular file Device: 801h/2049d Inode: 1048686 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-05-05 13:14:00.000000000 +0800 Modify: 2015-05-24 06:39:45.061752510 +0800 Change: 2015-05-24 07:09:56.662025805 +0800 [[email protected] FIND_test]# stat `find ./ -atime +2` File: `./find_a_test1' Size: 1438720 Blocks: 2816 IO Block: 4096 regular file Device: 801h/2049d Inode: 1048686 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-05-05 13:14:00.000000000 +0800 Modify: 2015-05-24 06:39:45.061752510 +0800 Change: 2015-05-24 07:09:56.662025805 +0800
讲解演示都结束了,那么问题来了
1查找/var目录属主为root且属组为mail的所有文件
2查找/usr目录下不属于root、bin或者hadoop的所有文件
3查找/etc目录下最近一周内其内容修改过且不属于root或hadopp的文件
4查找当前系统上没有属主或属组且最近1个月内曾被访问过的文件
5查找/etc目录下大于1M的普通文件夹
6查找/etc目录下所有用户都没有写权限的文件
7查找/etc目录下至少有一类用户没有写权限的文件
8查找/etc/init.d目录下所有用户都有执行权限且其他用户有写权限的文件。
2015年5月24日 上午9:40 1F
第一次访问,支持一下哈。