文件查找命令find介紹及使用
find概述
1 find介紹
find是一個實時查找命令,可以精確查找,支持衆多查找標準,由於是遍歷指定目錄中的所有文件a查找的,所以速度相對較慢
2 find的命令格式
find 查找路徑 查找標準 查找到以後要處理的動作
查找路徑: 默認的是當前路徑
查找標準:
(1) 根據文件名查找 -name filename
支持文件名匹配,但嚴格區分大小寫,如要不區分大小寫,使用-iname
如:查找/tmp下的以.txt結尾的無文件
find /tmp -name *.txt
(2) 基於正則表達式的文件名查找 -regex parttern
如:查找
(3) 根據文件所有者(屬主)查找 -user username
如:查找、tmp下屬主是root的文件
find /tmp -user root
(4) 根據文件屬組查找 -group groupname
(5) 根據文件屬主uid查找 -uid uid
(6) 根據文件屬組gid查找 -gid gid
(7) 查找沒有屬主的文件 -nouser
(8) 查找沒有屬組的文件 -nogroup
(9) 根據文件的類型查找 -type f、d、c、b、l、p、s
相信大家知道f、d、c ......他們代表的文件類型了,這裏就不做說明了
如:查找/tmp下文件類型爲目錄的文件
find /tmp -type f
(10) 根據文件的大小查找 -size [+|-]#(k、M、G)
+ 表示大於,-表示小於
K、M、G表示單位
如 +7k 表示大於7k的文件
-7M 表示小於7M的文件
(11) 根據文件時間屬性查找
根據訪問文件的時間 -atime|-amine [+|-]#
根據文件改變時間查找 -ctime|-cmine [+|-]#
根據文件修改時間查找 -mtime|-mmine [+|-] #
[+|-]# 和上面一樣,+#表示至少多少時間內沒訪問過,-#表示#時間之內訪問過
(-atime、-ctime、-mtime)的單位是天(-amine、-cmine、-mmine)單位是分鐘
(12) 根據文件的權限查找
-perm mode|-mode|/made
mode 表示精確匹配
-mode 表示有一位匹配就行(本身包含或的關係)
/mode 文件權限能完全包含MDOE時才能找到(本身包含且關係)
如:查找查找當前系統上沒有屬主或屬組且最近1天內曾被訪問過的文件,並將其屬主屬組均修改爲root的文件;
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
處理動作:
-print 顯示查找結果
-ls 類似ls -l顯示每個文件的信息
-ok COMMAND {} \;
COMMAND是指令,命令行操作 {}表示當前找到的路徑文件; \;必須有,表示結束
-exec COMMAND {} \; (與-okl一樣,但-ok的每一步操作都需要你確認是否執行,而-exec不用)
如:查找/etc目錄下所有用戶都沒有寫權限的文件,顯示出其詳細信息;
find /etc -not -perm /222 -ls
3.組合條件:就是組合查找條件的
-a 與條件
-o 或條件
-not 非條件
(如果給出了兩個條件沒有給連接方式時時默認的就是與邏輯)
not權限最高 帶括號的時候,括號要用反義;與的優先級高於或
如:查找/tmp下文件類型爲f 且大小大於10k的文件
find /tmp -type d -a -size +10k
查找/usr目錄下不屬於root,bin,或student的文件;
find /usr -not -user root -a -not -user bin -a -not -user student
find /usr -not \( -user root -o -user bin -o -user student \)
查找當前系統上沒有屬主或屬組且最近1天內曾被訪問過的文件,並將其屬主屬組均修改爲root;
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;