find 命令的一般形式為
find pathname -options [-PRint -exec -ok]
讓我們來看看該命令的參數(shù):
pathname find命令所查找的目錄路徑。例如用.來表示當(dāng)前目錄,用/來表示系統(tǒng)根目錄。
-print find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出。
-exec find命令對(duì)匹配的文件執(zhí)行該參數(shù)所給出的s h e l l命令。相應(yīng)命令的形式為' c o m m -and' {} /;,注意{ }和/;之間的空格。
-ok 和- e x e c的作用相同,只不過以一種更為安全的模式來執(zhí)行該參數(shù)所給出的s h e l l命令,在執(zhí)行每一個(gè)命令之前,都會(huì)給出提示,讓用戶來確定是否執(zhí)行。
-name | 按照文件名查找文件。 |
-perm | 按照文件權(quán)限來查找文件。 |
-prune | 使用這一選項(xiàng)可以使f i n d命令不在當(dāng)前指定的目錄中查找,如果同時(shí)使用了- d e p t h選項(xiàng),那么- p r u n e選項(xiàng)將被f i n d命令忽略。 |
-user | 按照文件屬主來查找文件。 |
-group | 按照文件所屬的組來查找文件。 |
-mtime -n +n | 按照文件的更改時(shí)間來查找文件, - n表示文件更改時(shí)間距現(xiàn)在n天以內(nèi),+ n表示文件更改時(shí)間距現(xiàn)在n天以前。 |
-newer file1 ! File2 | 查找更改時(shí)間比文件f i l e 1新但比文件f i l e 2舊的文件。 |
-nogroup | 查找無有效所屬組的文件,即該文件所屬的組在/ e t c / g r o u p s中不存在。 |
-nouser | 查找無有效屬主的文件,即該文件的屬主在/ e t c / p a s s w d中不存在。 |
-type | 查找某一類型的文件,諸如: |
b - 塊設(shè)備文件。 | |
d - 目錄。 | |
c - 字符設(shè)備文件。 | |
p - 管道文件。 | |
l - 符號(hào)鏈接文件。 | |
f - 普通文件。 | |
-size n[c] | 查找文件長度為n塊的文件,帶有c時(shí)表示文件長度以字節(jié)計(jì)。 |
-depth | 在查找文件時(shí),首先查找當(dāng)前目錄中的文件,然后再在其子目錄中查找。 |
-fstype | 查找位于某一類型文件系統(tǒng)中的文件,這些文件系統(tǒng)類型通常可以在配置文件/ e t c / f s t a b中找到,該配置文件中包含了本系統(tǒng)中有關(guān)文件系統(tǒng)的信息。 |
-mount | 在查找文件時(shí)不跨越文件系統(tǒng)m o u n t點(diǎn)。 |
-follow | 如果f i n d命令遇到符號(hào)鏈接文件,就跟蹤至鏈接所指向的文件。 |
-cpio | 對(duì)匹配的文件使用c p i o命令,將這些文件備份到磁帶設(shè)備中。 |
列出當(dāng)前目錄下一天以內(nèi)的文件
find . -mtime -1 -print
列出當(dāng)前目錄下3天以前的文件
find . -mtime +3 –print
查看當(dāng)前目錄下比orcl1_mmon_4503.trc新,但比orcl1_rcbg_6676.trc舊的文件。
find . -newer orcl1_mmon_4503.trc ! -newer orcl1_rcbg_6676.trc -exec ls -l {} /;
$ touch 1.txt
$ touch 2.txt
$ find . -newer 1.txt
.
./2.txt
查看大小恰好為1個(gè)塊大小的文件
$ find . -size 1 -print
./1.txt
查看恰好為2個(gè)字節(jié)的文件(默認(rèn)一個(gè)英文字母占兩個(gè)字節(jié))
$ find . -size 2c -print
./1.txt
查看超過一個(gè)塊大小的文件
find . –size +1 -print
首先查找所有的文件,然后再進(jìn)入子目錄查尋
$ find . -name "awr*" -depth -print
find: warning: you have specified the -depth option after a non-option argument -name, but options are not positional (-depth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
./awrrpt_rac_45_53.html
查看當(dāng)前目錄下的普通文件(不包含目錄,但會(huì)遞歸查找子目錄下的所有文件)
find . –type f -exec ls -l {} /;
刪除日志目錄下5天前的普通文件(子目錄不會(huì)被刪除)
find log –type f –mtime +5 –exec rm {} /;
刪除當(dāng)前目錄log下及其子目錄下所有普通文件(子目錄不會(huì)被刪除)
find log -type f -exec rm -rf {} /;
ok操作需要進(jìn)行確認(rèn)
$ find . -type f -ok rm -rf {} /;
< rm ... ./b > ? y
< rm ... ./a > ? y
查看指定文件中指定的相關(guān)內(nèi)容。首先匹配所有文件名為“ passwd *”的文件,例如passwd、passwd . old、passwd . bak,然后執(zhí)行g(shù)rep命令看看在這些文件中是否存在一個(gè)admin用戶。
find /etc/ -name "passwd*" -exec grep "admin" {} /;
admin:x:903:503::/home/admin:/bin/bash
查看Oracle日志中的錯(cuò)誤信息
[oracle@r7 trace]$ find . -name "orcl*" -exec grep "ORA-" {} /;
F i n d命令把匹配到的文件傳遞給x a rg s命令,而x a rg s命令每次只獲取一部分文件而不是全部,不像- e x e c選項(xiàng)那樣。這樣它可以先處理
最先獲取的一部分文件,然后是下一批,并如此繼續(xù)下去。在有些系統(tǒng)中,使用- e x e c選項(xiàng)會(huì)為處理每一個(gè)匹配到的文件而發(fā)起一個(gè)相應(yīng)的進(jìn)程,并非將匹配到的文件全部作為參數(shù)一次執(zhí)行;這樣在有些情況下就會(huì)出現(xiàn)進(jìn)程過多,系統(tǒng)性能下降的問題,因而效率不高;而使用x a rg s命令則只有一個(gè)進(jìn)程。另外,在使用x a rg s命令時(shí),究竟是一次獲取所有的參數(shù),還是分批取得參數(shù),以及每一次獲取參數(shù)的數(shù)目都會(huì)根據(jù)該命令的選項(xiàng)及系統(tǒng)內(nèi)核中相應(yīng)的可調(diào)參數(shù)來確定。
下面的例子在整個(gè)系統(tǒng)中查找內(nèi)存信息轉(zhuǎn)儲(chǔ)文件(core dump) ,然后把結(jié)果保存到/tmp/core.log 文件中:
$ find . -name "core" -print | xargs echo "" >/tmp/core.log
下面的例子在/ a p p s / a u d i t目錄下查找所有用戶具有讀、寫和執(zhí)行權(quán)限的文件,并收回相應(yīng)的寫權(quán)限:
$ find /apps/audit -perm -7 -print | xargs chmod o-w
在下面的例子中,我們用g r e p命令在所有的普通文件中搜索d e v i c e這個(gè)詞:
$ find / -type f -print | xargs grep "device"
在下面的例子中,我們用g r e p命令在當(dāng)前目錄下的所有普通文件中搜索D B O這個(gè)詞:
$ find . -name */-type f -print | xargs grep "DBO"
注意,在上面的例子中, /用來取消f i n d命令中的*在s h e l l中的特殊含義。
新聞熱點(diǎn)
疑難解答
圖片精選