功能:
find命令用于根據一定的規則,在指定目錄下查找符合條件的文件
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [pathname] [expression]
find [選項] [路徑] [操作語句]

一)查找條件
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

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命令,最后以分號(;)作為結束標志,考慮到各個系統中分號會有不同的意義,所以前面要加反斜杠進行轉義

范例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命令