功能:
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
- 第一章:文件和目录操作类命令
- 第一节:pwd命令
- 第二节:cd命令
- 第三节:mkdir命令
- 第四节:touch命令
- 第五节:ls命令
- 第六节:cp命令
- 第八节: mv命令
- 第九节:ln命令
- 第十节:find命令
- 第十一节:chattr命令
- 第十二节:chown命令
- 第十三节:chmod命令
- 第二章:文件过滤和内容编辑类命令
- 第一节: cat命令
- 第二节:less命令
- 第三节:head命令
- 第四节:tail命令
- 第五节:cut命令
- 第六节:sort命令
- 第七节:wc命令
- 第八节:tr命令
- 第三章:文本处理三剑客
- 第一节:grep命令
- 第二节:sed命令
- 第四章:linux信息显示类或搜索命令
- 第一节:uname命令
- 第二节:du命令
- 第三节:data命令
- 第四节:echo命令
- 第五节:watch命令
- 第五章: 文件备份和压缩类命令
- 第一节:tar命令
- 第二节:gzip压缩
- 第三节:zip和upzip命令
- 第四节:scp命令
- 第五节: rsync文件同步工具命令
- 第六章:Linux用户管理及用户信息查询类命令
- 第一节:useradd命令
- 第二节:usermod命令
- 第三节:userdel命令
- 第四节:groupadd和groupdel命令
- 第五节:passwd命令
- 第六节:su命令
- 第七节:visudo命令
- 第八节:id命令
- 第九节:w和who命令
- 第十节:last和lastb命令
- 第七章: Linux磁盘及文件系统管理
- 第一节:fdisk命令
- 第二节: partprobe命令
- 第三节:parted磁盘分区工具
- 第四节:mkfs命令
- 第五节:dumpe2fs命令
- 第六节: fsck命令
- 第七节:mount和umount命令
- 第八节:dd命令
- 第九节:df命令