find
find查找基礎:
find 查找路徑 查找標準 查找到以後的處理運作
查找路徑:默認爲當前目錄
查找標準:默認爲指定路徑下的所有文件
處理運作:默認爲顯示
匹配標準:
-name 'FILENAME':對文件名作精確匹配
文件名通配:
*:任意長度的任意字符
?
[]
-iname 'FILENAME': 文件名匹配時不區分大小寫
-regex PATTERN:基於正則表達式進行文件名匹配 注意:正則表達式這裏是全部的匹配,
下面來舉例說明:
查找/etc/目錄中名字包含passwd的所有文件
-user USERNAME: 根據屬主查找
-group GROUPNAME: 根據屬組查找
-uid UID: 根據UID查找(當UID所對應的用戶刪除後,就只剩下了UID的號,這是方便查找哪些被刪除用戶的殘留文件。)
-gid GID: 根據GID查找(同上)
-nouser:查找沒有屬主的文件
-nogroup: 查找沒有屬組的文件
-type
f: 普通文件
d:目錄
c:字符文件
b:塊設備
l:鏈接文件
p:管道
s:套接字
-size [+|-] (只要是符合標準的都可以顯示,包括子目錄例如:父目錄滿足條件,如果要是子目錄中有滿足條件的可以被查找到)
#k(例如:10k那麼9-10k的都會顯示,他是會認爲9k多的也是10k)
#M
#G
組合條件:(默認是與)
-a
-o
-not
/tmp目錄,不是目錄,並且還不能套接字類型的文件
注意:這個是可以組合使用的例如:find /tmp/ -not \( -type d -o -type s \) 等價於
find /tep/ -not -type d -not -type s
/tmp/test目錄下,屬主不是user1,也不是user2的文件;
按照時間查詢:
按照天數
-mtime:修改時間
-ctime:改變時間
-atime:進入時間
[+|-]#
按照分鐘數:
-mmin
-cmin
-amin
[+|-]#
按照權限查找
-perm MODE:精確匹配
/MODE: 任意一位匹配即滿足條件
-MODE: 文件權限能完全包含此MODE時才符合條件
-644
644: rw-r--r--
755: rwxr-xr-x
750: rwxr-x---
find ./ -perm -001
處理動作:
-print: 顯示
-ls:類似ls -l的形式顯示每一個文件的詳細
-ok COMMAND {}(這裏是佔位符表示查詢的結果) \; 每一次操作都需要用戶確認
-exec COMMAND {} \;
來。。我們來做題加深印象!!
1、查找/var目錄下屬主爲root並且屬組爲mail的所有文件;
2、查找/usr目錄下不屬於root,bin,或student的文件;
3、查找/etc目錄下最近一週內內容修改過且不屬於root及student用戶的文件;
find /etc -mtime -7 -not \ ( -user root -o -user student \)
4、查找當前系統上沒有屬主或屬組且最近1天內曾被訪問過的文件,並將其屬主屬組均修改爲root;
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
5、查找/etc目錄下大於1M的文件,並將其文件名寫入/tmp/etc.largefiles文件中;
find /etc -size +1M >> /tmp/etc.largefiles
find /etc/ -size +1M -exec echo {} >> /tmp/etc.largefiles \;
6、查找/etc目錄下所有用戶都沒有寫權限的文件,顯示出其詳細信息;
find /etc -not -perm /222 -ls
xargs這個命令可以總做在find後面(可以不用佔位符,輸出的結果不是每行一個,而是用空格隔開)
例如;find /etc -size +1M |xargs echo >> /tmp/etc.largefiles