多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
功能: find命令用于根据一定的规则,在指定目录下查找符合条件的文件 find [-H] [-L] [-P] [-D debugopts] [-Olevel] [pathname] [expression] find [选项] [路径] [操作语句] ![](https://box.kancloud.cn/96ce60720943fdb54fb500b3cce8d050_808x224.png) 一)查找条件 1、根据文件名查找 -name 文件名 -iname 文件名 (同时文件名使用glob通配符匹配) 2、根据用户属主属组属性 -user USERNAME 根据属主 -group GROUP 根据属组 -nouser 没有属主 -nogroup 没有属组 3、根据文件类型查找 -type TYPE 常见的文件类型有如下: f:普通文件 d:目录文件 l:符号链接文件 b:块设备文件 c:字符设备文件 p:命令名管道文件 4、根据文件大小查找 -size [+|-] # 常用的单位:K M G # 精确查找 #-1<x<=# 比如查找一个10K的文件,那么9.1k到10k的文件都属于咯 [root@fenfa ~]# find /etc -size 10k|xargs ls -lh -rw-r--r--. 1 root root 9.9K May 12 2016 /etc/bash_completion.d/yum.bash -rw-r--r--. 1 root root 9.7K May 27 2014 /etc/fonts/conf.avail/65-fonts-persian.conf -rw-r--r--. 1 root root 9.7K Nov 10 2015 /etc/postfix/generic -rw-------. 1 root root 9.2K Aug 14 11:26 /etc/selinux/targeted/modules/active/modules/canna.pp -rw-------. 1 root root 9.2K Aug 14 11:26 /etc/selinux/targeted/modules/active/modules/ccs.pp -rw-------. 1 root root 9.9K Aug 14 11:26 /etc/selinux/targeted/modules/active/modules/comsat.pp -rw-------. 1 root root 9.4K Aug 14 11:26 /etc/selinux/targeted/modules/active/modules/cyphesis.pp -rw-------. 1 root root 9.5K Aug 14 11:26 /etc/selinux/targeted/modules/active/modules/daemontools.pp -rw-------. 1 root root 9.9K Aug 14 11:26 /etc/selinux/targeted/modules/active/modules/dbskk.pp -rw-------. 1 root root 9.5K Aug 14 11:26 /etc/selinux/targeted/modules/active/modules/ddclient.pp -rw-------. 1 root root 9.1K Aug 14 11:26 /etc/selinux/targeted/modules/active/modules/dictd.pp -rw-------. 1 root root 9.8K Aug 14 11:26 /etc/selinux/targeted/modules/active/modules/drbd.pp -rw-------. 1 root root 9.3K Aug 14 11:26 /etc/selinux/targeted/modules/active/modules/fcoemon.pp -rw-------. 1 root root 9.5K Aug 14 11:26 /etc/selinux/targeted/modules/active/modules/fetchmail.pp -rw-------. 1 root root 10K Aug 14 11:26 /etc/selinux/targeted/modules/active/modules/hypervkvp.pp -# 表示x<=#-1 比如找10k的文件,小于等于9k的文件都会显示出来 +# 表示 x># 比如查找10k的文件,那么大于10k,10.1k以及以上的文件都会显示出来 5、根据文件的时间戳来查找 以天为单位 –mtime : 指定时间曾被改动过的文件,意思是文件內容被更改过 -ctime : 指定时间曾被更改过的文件,意思是文件权限被更改过 -atime : 指定时间曾被存取过的文件,意思是文件被读取过 -# x<# 表示#天之内,文件更改时间距现在n天以内 # #=<x<#+1 如果#为3,表示第#天 +# x>=#+1 表示n天以前 查看3天内被改动的文件 Find /var/log –mtime -3 –type f –print 查找一天内被访问的文件 find . -atime -1 -type f -print ![](https://box.kancloud.cn/d9adfcec935deee61b98604314bf2461_801x326.png) 6、根据文件权限查找 -perm [+|-] MODE +MODE 任何一类用户的权限(属主、属组、其他),只要能包含对其指定的任何一位权限即可 例如 find /etc -perm +222 (或关系) -MODE: 每一类用户的权限都包含对指定的所有权限 比如-222,那么666符合条件,664不符合条件 二)组合查找条件 -a 与 运算 (两者都满足才为真,所有条件必须同时满足) 其实-a是可以省略的 -o 或 运算(满足其中一个条件即可) !非运算(不满足指定条件的才可以) Find /tmp –not \(-name “*.txt” –o –name “*.out”\) 三)action操作 -exec 对匹配的文件执行该参数给出的shell命令 |xargs 把前一个命令的输出,当作后一个命令的输入来源 -exec后面跟的是command命令,最后以分号(;)作为结束标志,考虑到各个系统中分号会有不同的意义,所以前面要加反斜杠进行转义 ![](https://box.kancloud.cn/682e3e865a6473e310abbeeb76d0c766_2x2.png) 范例1: 查找指定时间内修改过的文件。 [root@fenfa tmp]# find .-atime -2 #<==“.”代表当前目录,查找两天内受到访问的文件使用选项atime,-2代表两天内。 ./file1.txt ./file2.txt ./dir1 范例2:根据文件大小查找 查找/etc目录下大于1M,且类型为普通文件的所有文件 find /etc –size +1M -a –type f -print 范例3: 在目录中查找更改时间在n天以前的文件,并删除它们。 [root@fefa tmp]# find .-type f -mtime +14 -exec rm {} \; #<==find命令在目录中查找更改时间在14天以前的文件,并在-exec选项中使用rm命令将它们删除 范例4: 将/etc目录下所有普通文件打包压缩 [root@fenfa /]# find /oldboy -type f -name "*.txt"|xargs tar zcvf file.tar.gz 范例5:查找/tmp/test目录下,保留指定文件file6.txt,其他的普通文件都删除 [root@fenfa test]# ll total 16 drwxr-xr-x 2 root root 4096 Jan 9 11:57 dir1 drwxr-xr-x 2 root root 4096 Jan 9 11:25 dir2 drwxr-xr-x 2 root root 4096 Jan 9 11:25 dir3 -rw-r--r-- 1 root root 0 Jan 9 11:25 file1.txt -rw-r--r-- 1 root root 0 Jan 9 11:25 file2.txt -rw-r--r-- 1 root root 0 Jan 9 11:25 file3.txt -rw-r--r-- 1 root root 0 Jan 9 11:55 file5.txt -rw-r--r-- 1 root root 0 Jan 9 11:25 file6.txt -rw-r--r-- 1 root root 202 Jan 9 14:42 file.tar.gz -rw-r--r-- 1 root root 0 Jan 9 11:40 test.txt [root@fenfa test]# find /tmp/test -type f -a ! -name "file6.txt"|xargs rm -f [root@fenfa test]# ll total 12 drwxr-xr-x 2 root root 4096 Jan 9 14:45 dir1 drwxr-xr-x 2 root root 4096 Jan 9 11:25 dir2 drwxr-xr-x 2 root root 4096 Jan 9 11:25 dir3 -rw-r--r-- 1 root root 0 Jan 9 11:25 file6.txt 范例6、保留4天以内的日志,其他日志移到备份目录 [root@fenfa tmp]# find . -type f -name "access*.log" -mtime +4|xargs -i mv {} /backup/ [root@fenfa tmp]# cd /backup/ [root@fenfa backup]# ll total 0 -rw-r--r-- 1 root root 0 Jan 1 00:00 access_www_2018-01-01.log -rw-r--r-- 1 root root 0 Jan 2 00:00 access_www_2018-01-02.log -rw-r--r-- 1 root root 0 Jan 3 00:00 access_www_2018-01-03.log -rw-r--r-- 1 root root 0 Jan 4 00:00 access_www_2018-01-04.log