1、功能說明
find命令用來在指定的路徑下查詢指定的檔案。其格式如下:
find path-name [-options] [-print -exec -ok 命令 \ ;]
path-name:find命令查詢的目錄路徑,例如可以用「.」表示當前目錄,用「\」表示系統根目錄。
-options:find命令的這個選項主要用來控制搜尋的方式。下面列出「-options」選項常見的幾個格式:
-name 『字串』:查詢檔案名匹配所給字串的所有檔案,字串內可用萬用字元*、?、
-lname 『字串』:查詢檔案名匹配所給字串的所有符號鏈結檔案,字串內可用萬用字元*、?、
-gid n:查詢屬於id號為n的使用者組的所有檔案
-uid n:查詢屬於id號為n的使用者的所有檔案
-empty:查詢大小為0的檔案或目錄
-path 『字串』:查詢路勁發名匹配所給字串的所有檔案,字串內可用萬用字元*、?、
-group 『字串』:查詢屬於使用者組名為所給字串的所有檔案
-depth:在查詢檔案時,首先查詢當前目錄下的檔案,然後在查詢其子目錄下的檔案
-prune 目錄:指出搜尋時不搜尋該目錄。如果同時使用-depth選項,那麼-prune選項將被find命令忽略
-size n:查詢檔案長度為n塊的檔案,帶有c時表示檔案長度以位元組計
-user 『字串』:查詢屬於使用者名為所給字串的所有的檔案
-mtime +n或-n:按時間搜尋,+n表示n天之前的,-n表示今天到n天前之間的
-type 檔案型別:按指定檔案型別搜尋。檔案型別包括b(塊裝置檔案)、c(字元裝置檔案)、f(普通檔案)、l(符號鏈結)、d(目錄)、p(管道)、s(socket檔案)
-print:搜尋結果輸出到標準輸出。
-exec:對搜尋出符合條件的檔案執行所給出的linux命令,而不詢問使用者是否需要執行該命令。表示shell命令的選項即為所查詢到的檔案。命令的末尾必須以「;」結束。【注意:「-exec 命令 {} \;」,在 } 和 \ 之間有空格隔開】
-ok:對搜尋出符合條件的檔案執行所給出的linux命令。與-exec不同的是,它會詢問使用者是否需要執行該命令。
2、舉例
(1)在系統根目錄下,查詢檔案為普通檔案,屬於student使用者的,2天以前的,並且查詢時不包含/usr/bin目錄的檔名為main.c的檔案,並將結果輸出到螢幕:
find / -path "/usr/bin" -prune -o -name "main.c" -user student -type f -mtime +2 -print
(2)對上例中搜尋的結果進行刪除操作:
find / -path "/usr/bin" -prune -o -name "main.c" -user student -type f -mtime +2 -print -exec rm {} \;
(3)查詢系統中所有大小為0的普通檔案,並列出它們的完整路徑:
find / -type f -size 0 -exec ls -al {} \;
(4)查詢系統/var/logs目錄中修改時間在7天以前的普通檔案,然後以互動方式刪除:
find /var/logs -type f -mtime +7 -ok rm {} \;
(5)在當前目錄及子目錄下查詢所有「*.txt」的檔案:
find . -name "*.txt" -print
(6)在使用者自己的根目錄下查詢檔案名以乙個大寫字母開頭,緊接著是乙個小寫字母和兩個數字,最後以「*.txt」結尾的檔案:
find ~ -name "[a-z] [a-z] [0-9] [0-9]*.txt"
(7)在/etc目錄下查詢檔案屬主為student使用者的檔案:
find /etc -user student -print
#linux
find 查詢指定許可權的檔案
說明 並新增了一些自己的修改 p 查詢系統中被設定了setuid的檔案 find type f perm 04000 o perm 02000 exec ls lg perm permission perm mode 精確匹配許可權 perm mode 完全包含此mode時才可以匹配 perm mo...
find命令之查詢指定目錄
問題 1 在當前目錄下查詢不在 svn 目錄中的可執行檔案。find path svn prune o type f executable print 注意 print 必須放到最後 o 表示邏輯運算 or 即如果 path 後的模式匹配成功,則執行。prune 表示忽略該目錄 否則 o 就執行 t...
find命令查詢包含指定內容的檔案
前端時間一直在思索如何查詢包含指定內容的檔案,但是一直苦思不得其解。後來范縣問題的原因在於對linux的管道 的理解不夠徹底。咱一直以為查詢當前目錄內包含x的查詢方式是 find grep x 後來檢視多方資料發現,應該是 find exec grep x 或者 find xargs grep x ...