您的位置:首页 > 其它

FIND的使用方法

2015-07-29 16:39 148 查看
find [PATH] [option] [action]
參數:
1. 與時間有關的參數:
-atime n :n 為數字,意義為在 n 天之前的『一天之內』被 access 過的檔案;
-ctime n :n 為數字,意義為在 n 天之前的『一天之內』被 change 過狀態的檔案;
-mtime n :n 為數字,意義為在 n 天之前的『一天之內』被 modification 過的檔案;
-newer file :file 為一個存在的檔案,意思是說,只要檔案比 file 還要新,
就會被列出來~
2. 與使用者或群組名稱有關的參數:
-uid n :n 為數字,這個數字是使用者的帳號 ID,亦即 UID ,這個 UID 是記錄在
/etc/passwd 裡面與帳號名稱對應的數字。這方面我們會在第四篇介紹。
-gid n :n 為數字,這個數字是群組名稱的 ID,亦即 GID,這個 GID 記錄在
/etc/group,相關的介紹我們會第四篇說明~
-user name :name 為使用者帳號名稱喔!例如 dmtsai
-group name:name 為群組名稱喔,例如 users ;
-nouser :尋找檔案的擁有者不存在 /etc/passwd 的人!
-nogroup :尋找檔案的擁有群組不存在於 /etc/group 的檔案!
當您自行安裝軟體時,很可能該軟體的屬性當中並沒有檔案擁有者,
這是可能的!在這個時候,就可以使用 -nouser 與 -nogroup 搜尋。
3. 與檔案權限及名稱有關的參數:
-name filename:搜尋檔案名稱為 filename 的檔案;
-size [+-]SIZE:搜尋比 SIZE 還要大(+)或小(-)的檔案。這個 SIZE 的規格有:
c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB
還要大的檔案,就是『 -size +50k 』
-type TYPE :搜尋檔案的類型為 TYPE 的,類型主要有:一般正規檔案 (f),
裝置檔案 (b, c), 目錄 (d), 連結檔 (l), socket (s),
及 FIFO (p) 等屬性。
-perm mode :搜尋檔案屬性『剛好等於』 mode 的檔案,這個 mode 為類似 chmod
的屬性值,舉例來說, -rwsr-xr-x 的屬性為 4755 !
-perm -mode :搜尋檔案屬性『必須要全部囊括 mode 的屬性』的檔案,舉例來說,
我們要搜尋 -rwxr--r-- ,亦即 0744 的檔案,使用 -perm -0744,
當一個檔案的屬性為 -rwsr-xr-x ,亦即 4755 時,也會被列出來,
因為 -rwsr-xr-x 的屬性已經囊括了 -rwxr--r-- 的屬性了。
-perm +mode :搜尋檔案屬性『包含任一 mode 的屬性』的檔案,舉例來說,我們搜尋
-rwxr-xr-x ,亦即 -perm +755 時,但一個檔案屬性為 -rw-------
也會被列出來,因為他有 -rw.... 的屬性存在!
4. 額外可進行的動作:
-exec command :command 為其他指令,-exec 後面可再接額外的指令來處理搜尋到
的結果。
-print :將結果列印到螢幕上,這個動作是預設動作!
範例:
範例一:將過去系統上面 24 小時內有更動過內容 (mtime) 的檔案列出
[root@linux ~]# find / -mtime 0
# 那個 0 是重點!0 代表目前的時間,所以,從現在開始到 24 小時前,
# 有變動過內容的檔案都會被列出來!那如果是三天前的 24 小時內?
# find / -mtime 3 ,意思是說今天之前的 3*24 ~ 4*24 小時之間
# 有變動過的檔案都被列出的意思!同時 -atime 與 -ctime 的用法相同。
範例二:尋找 /etc 底下的檔案,如果檔案日期比 /etc/passwd 新就列出
[root@linux ~]# find /etc -newer /etc/passwd
# -newer 用在分辨兩個檔案之間的新舊關係是很有用的!
範例三:搜尋 /home 底下屬於 dmtsai 的檔案
[root@linux ~]# find /home -user dmtsai
# 這個東西也很有用的~當我們要找出任何一個使用者在系統當中的所有檔案時,
# 就可以利用這個指令將屬於某個使用者的所有檔案都找出來喔!
範例四:搜尋系統中不屬於任何人的檔案
[root@linux ~]# find / -nouser
# 透過這個指令,可以輕易的就找出那些不太正常的檔案。
# 如果有找到不屬於系統任何人的檔案時,不要太緊張,
# 那有時候是正常的~尤其是您曾經以原始碼自行編譯軟體時。
範例五:找出檔名為 passwd 這個檔案
[root@linux ~]# find / -name passwd
# 利用這個 -name 可以搜尋檔名啊!
範例六:搜尋檔案屬性為 f (一般檔案) 的檔案
[root@linux ~]# find /home -type f
# 這個 -type 的屬性也很有幫助喔!尤其是要找出那些怪異的檔案,
# 例如 socket 與 FIFO 檔案,可以用 find /var -type p 或 -type s 來找!
範例七:搜尋檔案當中含有 SGID/SUID/SBIT 的屬性
[root@linux ~]# find / -perm +7000
# 所謂的 7000 就是 ---s--s--t ,那麼只要含有 s 或 t 的就列出,
# 所以當然要使用 +7000 ,使用 -7000 表示要含有 ---s--s--t 的所有三個權限,
# 因此,就是 +7000 ~瞭乎?
範例八:將上個範例找到的檔案使用 ls -l 列出來~
[root@linux ~]# find / -perm +7000 -exec ls -l {} \;
# 注意到,那個 -exec 後面的 ls -l 就是額外的指令,
# 而那個 {} 代表的是『由 find 找到的內容』的意思~所以, -exec ls -l {}
# 就是將前面找到的那些檔案以 ls -l 列出長的資料!至於 \; 則是表示
# -exec 的指令到此為止的意思~意思是說,整個指令其實只有在
# -exec (裡面就是指令下達) \;
# 也就是說,-exec 最後一定要以 \; 結束才行!這樣瞭解了嗎?!
範例九:找出系統中,大於 1MB 的檔案
[root@linux ~]# find / -size +1000k
# 雖然在 man page 提到可以使用 M 與 G 分別代表 MB 與 GB,
# 不過,俺卻試不出來這個功能~所以,目前應該是僅支援到 c 與 k 吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: