find命令
- 語法:
find pathname -option [-print] [-exec -ok command] {} \;
- 功能:用于在文件樹中查找文件,并做出相應(yīng)的處理
- 參數(shù):
- pathname:
find命令所查找的目錄路徑,其中.表示當(dāng)前目錄,/表示系統(tǒng)根目錄 -
-print: 經(jīng)匹配的文件輸出到標(biāo)準(zhǔn)輸出 -
-exec:find對匹配的文件執(zhí)行該參數(shù)所給出的shell命令,需要注意{}和\;之間有空格 -
-ok: 和-exec的作用相同,只不過以一種更安全的模式來執(zhí)行該參數(shù)給出的 shell 命令,在執(zhí)行每一個(gè)命令前,都會(huì)給出提示,讓用戶來確定是否執(zhí)行。
- pathname:
- 命令選項(xiàng):
-name: 按照文件名查找文件
-perm: 按照文件權(quán)限來查找文件
-user: 按照文件屬主來查找文件
-group: 按照文件所屬的組來查找文件
---------------------------------------------------------------------------------------------------------------------
-mtime -n +n: 按照文件的更改時(shí)間來查找文件,-n表示文件更改時(shí)間距離現(xiàn)在 n 天以內(nèi),+n表示文件更改時(shí)間距離現(xiàn)在 n 天以前
-atime n: 查找系統(tǒng)中最后 n*24小時(shí)被訪問(access)的文件
-amin n: 查找系統(tǒng)中最后 n 分鐘被訪問(access)的文件
-ctime n: 查找系統(tǒng)中最后n*24小時(shí)被改變文件狀態(tài)(chmod)的文件
-ctmin n: 查找系統(tǒng)中最后 n 分鐘被改變文件狀態(tài)(chmod)的文件
-mtime n:查找系統(tǒng)中最后n*24被改變文件數(shù)據(jù)的文件
-mmin n: 查找系統(tǒng)中**最后 n 分鐘被改變文件數(shù)據(jù)的文件 **
-------------------------------------------------------------------------------------------------------------------------
-nogroup: 查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在
-nouser: 查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在
-newer file1 ! file2: 查找文件更改時(shí)間比 file1 但是比 file2 舊的文件
-------------------------------------------------------------------------------------------------------------------------
-type:查找某一類型的文件,比如:
-type b: 塊設(shè)備文件
-type d: 目錄
-type c: 字符設(shè)備文件
-type p: 管道文件
-type l: 符號(hào)連接文件
-type f: 普通文件
-------------------------------------------------------------------------------------------------------------------------
-size n[c]: 查找長度為 n 塊的文件,帶有 c 表示文件長度以字節(jié)計(jì)
-depth: 在查找文件時(shí),首先查找當(dāng)前目錄中的文件,然后再在其子目錄中查找 - 使用實(shí)例:
- 在當(dāng)前目錄查找后綴為 log 的文件
find -name "*.log"- 按照目錄或文件的權(quán)限來查找文件: 查找權(quán)限為777的文件
find /opt/soft/test -perm 777- 按照文件大小查找文件: 查找當(dāng)前目錄大于1K的文件
find . size +1000c -print
**********************************************************************************************************
**********************************************************************************************************
當(dāng)使用find查找出后,還可以進(jìn)一步的操作,這里用到 exec
-exec參數(shù)后面跟command 命令,其終止是以;為結(jié)束標(biāo)志的,所以這句話后面的分號(hào);是不可缺少的,考慮到各個(gè)系統(tǒng)中分號(hào)會(huì)有不同的意義,所以前面加上反斜杠\;花括號(hào)
{}代表前面find查找出來的文件名-
使用實(shí)例:
- ls -l命令放在find命令的-exec選項(xiàng)中 : find命令匹配到了當(dāng)前目錄下的所有普通文件,并在-exec選項(xiàng)中使用ls -l命令將它們列出。
find . -type f -exec ls -l {} \;- 在目錄中查找更改時(shí)間在n日以前的文件并刪除它們
find . type f -mtime +14 -exec rm {} \;在shell中用任何方式刪除文件之前,應(yīng)當(dāng)先查看相應(yīng)的文件,一定要小心!當(dāng)使用諸如mv或rm命令時(shí),可以使用-exec選項(xiàng)的安全模式。它將在對每個(gè)匹配到的文件進(jìn)行操作之前提示你。
- 在目錄中查找更改時(shí)間在n日以前的文件并刪除它們,在刪除之前先給出提示
find . -name "*.log" -mtime +5 -ok rm {} \;在上面的例子中, find命令在當(dāng)前目錄中查找所有文件名以.log結(jié)尾、更改時(shí)間在5日以上的文件,并刪除它們,只不過在刪除之前先給出提示。 按y鍵刪除文件,按n鍵不刪除。
- 嵌入使用 grep 命令
find /etc -name "passwd*" -exec grep "root" {} \;find命令首先匹配所有文件名為“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后執(zhí)行g(shù)rep命令看看在這些文件中是否存在一個(gè)root用戶。
- 查找文件移動(dòng)到指定目錄
find . -name "*.cpp" -exec mv {} ./test \;- 用exec選項(xiàng)執(zhí)行cp命令
find . -name "*.cpp" -exec cp {} ./test \; -
find默認(rèn)查找當(dāng)前目錄和子目錄,通過maxdepth限制只查當(dāng)前目錄
find . -maxdepth 1 -type f -name "*.php"