find [path...] [expression]shell
path:find命令所查找的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄express
expression:expression能夠分爲——「-options [-print -exec -ok ...]」apache
-options,指定find命令的經常使用選項,下節詳細介紹安全
-print,find命令將匹配的文件輸出到標準輸出app
-exec,find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式爲'command' { } \;,注意{ }和\;之間的空格
find ./ -size 0 -exec rm {} \; 刪除文件大小爲零的文件 (還能夠以這樣作:rm -i `find ./ -size 0` 或 find ./ -size 0 | xargs rm -f &)
爲了用ls -l命令列出所匹配到的文件,能夠把ls -l命令放在find命令的-exec選項中:find . -type f -exec ls -l { } \;
在/logs目錄中查找更改時間在5日之前的文件並刪除它們:find /logs -type f -mtime +5 -exec rm { } \;ui
-ok,和-exec的做用相同,只不過以一種更爲安全的模式來執行該參數所給出的shell命令,在執行每個命令以前,都會給出提示,讓用戶來肯定是否執行。
find . -name "*.conf" -mtime +5 -ok rm { } \; 在當前目錄中查找全部文件名以.LOG結尾、更改時間在5日以上的文件,並刪除它們,只不過在刪除以前先給出提示spa
-name
按照文件名查找文件。
find /dir -name filename 在/dir目錄及其子目錄下面查找名字爲filename的文件
find . -name "*.c" 在當前目錄及其子目錄(用「.」表示)中查找任何擴展名爲「c」的文件regexp
-perm
按照文件權限來查找文件。
find . -perm 755 –print 在當前目錄下查找文件權限位爲755的文件,即文件屬主能夠讀、寫、執行,其餘用戶能夠讀、執行的文件orm
-prune
使用這一選項可使find命令不在當前指定的目錄中查找,若是同時使用-depth選項,那麼-prune將被find命令忽略。
find /apps -path "/apps/bin" -prune -o –print 在/apps目錄下查找文件,但不但願在/apps/bin目錄下查找
find /usr/sam -path "/usr/sam/dir1" -prune -o –print 在/usr/sam目錄下查找不在dir1子目錄以內的全部文件it
-user
按照文件屬主來查找文件。
find ~ -user sam –print 在$HOME目錄中查找文件屬主爲sam的文件
-group
按照文件所屬的組來查找文件。
find /apps -group gem –print 在/apps目錄下查找屬於gem用戶組的文件
-mtime -n +n
按照文件的更改時間來查找文件, - n表示文件更改時間距如今n天之內,+ n表示文件更改時間距如今n天之前。
find / -mtime -5 –print 在系統根目錄下查找更改時間在5日之內的文件
find /var/adm -mtime +3 –print 在/var/adm目錄下查找更改時間在3日之前的文件
-nogroup
查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。
find / –nogroup -print
-nouser
查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。
find /home -nouser –print
-newer file1 ! file2
查找更改時間比文件file1新但比文件file2舊的文件。
-type
查找某一類型的文件,諸如:
b - 塊設備文件。
d - 目錄。
c - 字符設備文件。
p - 管道文件。
l - 符號連接文件。
f - 普通文件。
find /etc -type d –print 在/etc目錄下查找全部的目錄
find . ! -type d –print 在當前目錄下查找除目錄之外的全部類型的文件
find /etc -type l –print 在/etc目錄下查找全部的符號連接文件
-size n:[c] 查找文件長度爲n塊的文件,帶有c時表示文件長度以字節計。
find . -size +1000000c –print 在當前目錄下查找文件長度大於1 M字節的文件
find /home/apache -size 100c –print 在/home/apache目錄下查找文件長度剛好爲100字節的文件
find . -size +10 –print 在當前目錄下查找長度超過10塊的文件(一塊等於512字節)
-depth:在查找文件時,首先查找當前目錄中的文件,而後再在其子目錄中查找。
find / -name "CON.FILE" -depth –print 它將首先匹配全部的文件而後再進入子目錄中查找
-mount:在查找文件時不跨越文件系統mount點。
find . -name "*.XC" -mount –print 從當前目錄開始查找位於本文件系統中文件名以XC結尾的文件(不進入其餘文件系統)
-follow:若是find命令遇到符號連接文件,就跟蹤至連接所指向的文件。
-?
同時顯示匹配行上下的?行,如:grep -2 pattern filename同時顯示匹配行的上下2行。
-b,--byte-offset
打印匹配行前面打印該行所在的塊號碼。
-c,--count
只打印匹配的行數,不顯示匹配的內容。
-f File,--file=File
從文件中提取模板。空文件中包含0個模板,因此什麼都不匹配。
-h,--no-filename
當搜索多個文件時,不顯示匹配文件名前綴。
-i,--ignore-case
忽略大小寫差異。
-q,--quiet
取消顯示,只返回退出狀態。0則表示找到了匹配的行。
-l,--files-with-matches
打印匹配模板的文件清單。
-L,--files-without-match
打印不匹配模板的文件清單。
-n,--line-number
在匹配的行前面打印行號。
-s,--silent
不顯示關於不存在或者沒法讀取文件的錯誤信息。
-v,--revert-match
反檢索,只顯示不匹配的行。
-w,--word-regexp
若是被\<和\>引用,就把表達式作爲一個單詞搜索。
find . -name 'test.js' | grep -ani 'value1' 在當前目錄下的test.js中尋找value1值得行,並顯示行號。
ls -al | grep '^-' | wc -l 計算當前目錄下的文件個數
ls -al | grep '^d' | wc -l 計算當前目錄下的子目錄個數
ls -lR | grep '^-' | wc -l 計算當前目錄下以及全部子目錄下全部文件個數