67923558 352 -r--r--r-- 1 root root 359773 7月 19 19:02 /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
[root@linuxidc ~]# find /etc/ ! -perm /222 -type f -ok ls -lh {} \;
< ls ... /etc/pki/ca-trust/extracted/java/cacerts > ? y
-r--r--r--. 1 root root 194K 7月 19 19:02 /etc/pki/ca-trust/extracted/java/cacerts
< ls ... /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt > ? y
-r--r--r--. 1 root root 352K 7月 19 19:02 /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
< ls ... /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem > ? y
[root@linuxidc ~]# find /etc/ ! -perm /222 -type f -exec ls -lh {} \;
-r--r--r--. 1 root root 194K 7月 19 19:02 /etc/pki/ca-trust/extracted/java/cacerts
-r--r--r--. 1 root root 352K 7月 19 19:02 /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
-r--r--r--. 1 root root 261K 7月 19 19:02 /etc/pki/ca-trust/extracted/pem/tls-
xargs命令:
该命令的主要功能是从输入中构建和执行shell命令。
在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够���递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现 溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;
而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
#查找当前目录下的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件。
1 2 3 4 5
root@linuxidc ~]# find . -type f -print | xargs file ./users2: ASCII text ./datafile3: empty ./users: ASCII text ./test.tar.bz2: bzip2 compressed data, block size = 900k
#回收当前目录下所有普通文件的执行权限。
1 2 3 4 5 6 7 8
[root@linuxidc ~]# find . -type f -print|xargs chmod a-x [root@linuxidc ~]# ll 总用量 8 -rw-r--r-- 1 root root 0 7月 30 11:38 ad -rwSr--r-- 1 root root 2620 7月 24 10:10 passwd.bak drwxr-xr-x 2 root root 6 7月 30 12:31 qwe drwxr-xr-x 2 root root 4096 7月 29 20:10 shell drwxr-xr-x 2 root root 125 7月 30 16:02 shlianxi
#在当面目录下查找所有普通文件,并用grep命令在搜索到的文件中查找hostname这个词
1
[root@linuxidc ~]# find /etc -type f -print | xargs grep "hostname"
练习:
1.查找/var/目录下属主为root,且数组为mall的所有文件或目录;
1 2 3
[root@linuxidc ~]# find /var/ -user root -a -group mail /var/spool/mail /var/spool/mail/root
2.查找/usr目录下不属于root,bin,或Hadoop的所有文件或目录,用两种方法
[root@linuxidc ~]# find /usr/ -not \( -user root -o -user bin -o -user hadoop\)
[root@linuxidc ~]# find /usr/ -not -user root -a -not -user bin -a not -usr hadoop
3.查找/etc/目录下最近一周内其文件修改过,且属主不是root用户也不是hadoop用户的文件或目录
1
[root@linuxidc ~]# find / -mtime -7 -a ! -user root -a ! -user hadoop
4.查找当前系统上没有属主或属组,且最近一周内曾被访问的文件或目录
1 2
[root@linuxidc ~]# find / -nouser -o -nogroup -a -atime -7 [root@linuxidc ~]#find / \(-nouser -o -nogroup\) -atime -7 -ls
5,查找/etc/目录下大于1M且类型为普通文件的所有文件
1 2
[root@linuxidc ~]# find /etc/ -size +1M -a -type f -ls [root@linuxidc ~]# find /etc/ -size +1M -type f -exec ls -lh {} \;
6,查找/etc/目录下所有用户都没有写权限的文件
1
[root@linuxidc ~]# find /etc/ -size +1M -a -type f -ls
7.查找/etc/目录下至少有一类用户没有执行权限的文件
1
[root@linuxidc ~]# find /etc/ ! -perm -111 -type -f -ls
8.查找/etc/init.d目录下,所有用户都有执行权限,且其他用户有写权限的所有文件.
1 2
[root@linuxidc ~]#find /etc/ -perm -111 -a -perm -002 -type f -ls [root@linuxidc ~]#find /etc/ -perm -113 -type f -ls