find命令
- 語(yǔ)法:
find pathname -option [-print] [-exec -ok command] {} \;
- 功能:用于在文件樹(shù)中查找文件睬涧,并做出相應(yīng)的處理
- 參數(shù):
- pathname:
find
命令所查找的目錄路徑,其中.
表示當(dāng)前目錄商叹,/
表示系統(tǒng)根目錄 -
-print
: 經(jīng)匹配的文件輸出到標(biāo)準(zhǔn)輸出 -
-exec
:find
對(duì)匹配的文件執(zhí)行該參數(shù)所給出的shell命令娄蔼,需要注意{}
和\;
之間有空格 -
-ok
: 和-exec
的作用相同窥翩,只不過(guò)以一種更安全的模式來(lái)執(zhí)行該參數(shù)給出的 shell 命令恭金,在執(zhí)行每一個(gè)命令前,都會(huì)給出提示勇边,讓用戶(hù)來(lái)確定是否執(zhí)行犹撒。
- pathname:
- 命令選項(xiàng):
-name
: 按照文件名查找文件
-perm
: 按照文件權(quán)限來(lái)查找文件
-user
: 按照文件屬主來(lái)查找文件
-group
: 按照文件所屬的組來(lái)查找文件
---------------------------------------------------------------------------------------------------------------------
-mtime -n +n
: 按照文件的更改時(shí)間來(lái)查找文件,-n
表示文件更改時(shí)間距離現(xiàn)在 n 天以?xún)?nèi)粒褒,+n
表示文件更改時(shí)間距離現(xiàn)在 n 天以前
-atime n
: 查找系統(tǒng)中最后 n*24小時(shí)被訪(fǎng)問(wèn)(access)的文件
-amin n
: 查找系統(tǒng)中最后 n 分鐘被訪(fǎng)問(wè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
: 查找無(wú)有效所屬組的文件识颊,即該文件所屬的組在/etc/groups
中不存在
-nouser
: 查找無(wú)有效屬主的文件,即該文件的屬主在/etc/passwd
中不存在
-newer file1 ! file2
: 查找文件更改時(shí)間比 file1 但是比 file2 舊的文件
-------------------------------------------------------------------------------------------------------------------------
-type
:查找某一類(lèi)型的文件奕坟,比如:
-type b
: 塊設(shè)備文件
-type d
: 目錄
-type c
: 字符設(shè)備文件
-type p
: 管道文件
-type l
: 符號(hào)連接文件
-type f
: 普通文件
-------------------------------------------------------------------------------------------------------------------------
-size n[c]
: 查找長(zhǎng)度為 n 塊的文件谊囚,帶有 c 表示文件長(zhǎng)度以字節(jié)計(jì)
-depth
: 在查找文件時(shí),首先查找當(dāng)前目錄中的文件执赡,然后再在其子目錄中查找 - 使用實(shí)例:
- 在當(dāng)前目錄查找后綴為 log 的文件
find -name "*.log"
- 按照目錄或文件的權(quán)限來(lái)查找文件: 查找權(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)志的,所以這句話(huà)后面的分號(hào);
是不可缺少的跌帐,考慮到各個(gè)系統(tǒng)中分號(hào)會(huì)有不同的意義首懈,所以前面加上反斜杠\
;花括號(hào)
{}
代表前面find查找出來(lái)的文件名-
使用實(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)的安全模式藐俺。它將在對(duì)每個(gè)匹配到的文件進(jìn)行操作之前提示你。
- 在目錄中查找更改時(shí)間在n日以前的文件并刪除它們泥彤,在刪除之前先給出提示
find . -name "*.log" -mtime +5 -ok rm {} \;
在上面的例子中欲芹, find命令在當(dāng)前目錄中查找所有文件名以.log結(jié)尾、更改時(shí)間在5日以上的文件吟吝,并刪除它們菱父,只不過(guò)在刪除之前先給出提示。 按y鍵刪除文件剑逃,按n鍵不刪除浙宜。
- 嵌入使用 grep 命令
find /etc -name "passwd*" -exec grep "root" {} \;
find命令首先匹配所有文件名為“ passwd*”的文件,例如passwd蛹磺、passwd.old粟瞬、passwd.bak,然后執(zhí)行g(shù)rep命令看看在這些文件中是否存在一個(gè)root用戶(hù)称开。
- 查找文件移動(dòng)到指定目錄
find . -name "*.cpp" -exec mv {} ./test \;
- 用exec選項(xiàng)執(zhí)行cp命令
find . -name "*.cpp" -exec cp {} ./test \;
-
find默認(rèn)查找當(dāng)前目錄和子目錄亩钟,通過(guò)maxdepth限制只查當(dāng)前目錄
find . -maxdepth 1 -type f -name "*.php"