「一切皆文件」是 Linux的哲學思想之一, 這條命令能夠統計當前linux系統中有多少文件ls -R / |wc -l &建議放在後臺執行,由於你的系統文件不少則會消耗不少時間,你能夠看見這個結果是龐大的,linux的系統中的文件實在是太多了,怎麼樣才能快速並且精確的在linux系統找出你想要的文件呢?Linux 的find命令提供了很強大的功能,學好find命令的使用,能夠給你節省大量花費在找文件的時間。linux
find的基本語法格式:bash
find [查找位置] [查找標準] [處理動做]ide
查找位置:默認爲當前目錄,能夠指定多個目錄,多個之間用空格ui
查找標準:默認爲查找指定目錄下的全部文件spa
處理動做:顯示到標準輸出,默認爲print3d
剖析find的查找標準可分爲哪些:blog
1)文件名get
-name "文件名稱" : 根據文件名查找,支持globit
-iname "文件名稱",根據文件名查找,不區分大小寫class
2)文件的屬主、屬組
-user "USERNAME" : 根據屬主查找
-group "GROUP" : 根據屬組查找
-uid "UID" : 根據UID查找
-gid "GID" : 根據GID查找
-nouser : 查找沒有屬主的文件
-nogroup : 查找沒有屬組的文件
[root@Redhat6 /]# find / -nouser -nogroup #沒有屬主,也沒有屬組 /tmp/user1dir [root@Redhat6 /]# ls -ld /tmp/user1dir/ #驗證查找的文件是否符合要求,文件沒有用戶表示屬主和屬組,但會以ID號來表示 drwxrwxr-x 2 500 500 4096 Jul 23 10:36 /tmp/user1dir/ [root@Redhat6 /]# find / -user root -gid 500 #查找用戶爲root,gid爲500 /tmp/user1dir [root@Redhat6 /]# ls -ld /tmp/user1dir/ drwxrwxr-x 2 root 500 4096 Jul 23 10:36 /tmp/user1dir/
3)文件的類型
-type
f 文件
d 目錄
b 塊設備
c 字符設備
l 符合連接文件
p 命令管道文件
s 套接字文件
4)文件的大小
-size
#[k|M|G]:#表示數字,匹配的時候爲模糊匹配
+#[k|M|G]:+#表示大於,匹配的結果大於#
-#[k|M|G] :-#表示小於,匹配的結果是小於#
5)文件修改時間
-atime [+|-]# :訪問時間,默認爲天,#表示#天的這個時間點,+#表示至少有#天沒訪問 , -#表示#天以內沒訪問
-mtime [+|-]# : 修改時間,#表示#天的這個時間點沒有被修改,+#表示至少有#天沒有修改 , -#表示#天以內沒有修改
-ctime [+|-]# : 改變時間,#表示#天的這個時間點沒有被改變,+#表示至少有#天沒有被改變 , -#表示#天以內沒有被改變
-amin [+|-]# : 時間爲分鐘,#表示#分鐘的這個時間點沒有被訪問,+#表示至少有#分鐘沒有被訪問 , -#表示#分鐘以內沒訪問
-mmin [+|-]# :時間爲分鐘,#表示#分鐘的這個時間點沒有被修改,+#表示至少有#分鐘沒有被修改 , -#表示#分鐘以內沒有被修改
-cmin [+|-]# :時間爲分鐘,#表示#分鐘的這個時間點沒有被改變,+#表示至少有#分鐘沒有被改變 , -#表示#分鐘以內沒有被改變
6)文件權限
-perm [+|-] MODE
不帶[+|-]表示精確權限匹配,
+表示任何一類用戶的任何一位權限匹配
- 表示每類用戶的每位權限都匹配
find在查找標準時支持組合查找條件,在使用組合查找條件時要考慮優先級,優先級爲順序爲非→與→或,在組合參數是想改變優先級能夠用()來提高優先級。
-a (and) 與默認是與
-o (or) 或
-not,! 非
find的處理動做能夠是:
-print 默認爲輸出
-ls 顯示查找到的文件的詳細信息
-ok COMMAND \; 要確認
-exec COMMAND \; 其中COMMAND中有對查找到的文件進行操做時,用{}來替代查找到的 文件,\;表示使用-exec的結束符,是固定格式; 使用-exec來出來查找的文件時,還能夠經過管道送給xargs命令來解決,xargs在執行命令時,若是有對文件進行操做則用-i選項,{}也表示要操做的文件。
一、查找/var目錄下屬主爲root而且屬組爲mail的全部文件; find /var -user root -group mail 二、查找/usr目錄下不屬於root,bin,或student的文件; find /usr -not \( -user root -o -user bin -o -user student \) find /usr -not -user root -a -not -user bin -a -not -user student 三、查找/etc目錄下最近一週內內容修改過且不屬於root及student用戶的文件; find /etc -mtime -7 -a -not -user root -a -not -user student find /etc -mtime -7 -a -not \( -user root -o -user student \) 四、查找當前系統上沒有屬主或屬組且最近1天內曾被訪問過的文件,並將其屬主屬組均修改成root; find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \; 五、查找/etc目錄下大於1M的文件,並將其文件名寫入/tmp/etc.largefiles文件中; find /etc -size +1M -exec echo {} >> /tmp/etc.largefiles \; find /etc -size +1M >> /tmp/etc.largefiles 六、查找/etc目錄下全部用戶都沒有寫權限的文件,顯示出其詳細信息; find /etc -not -perm +222 七、刪除類型不是目錄,並且沒有屬主的文件; find / -not -type d -a -nouser -exec rm -f {} \; find / -not -type d -a -nouser | xargs -i rm -f {}