每(mei)天一(yi)個linux命(ming)令(19):find 命(ming)令概覽
Linux下find命令(ling)在目(mu)錄結構中(zhong)搜索文(wen)件(jian)(jian),并執行指(zhi)定的操作。Linux下find命令(ling)提供了(le)相(xiang)當(dang)多(duo)(duo)的查找條件(jian)(jian),功(gong)能(neng)很強大(da)。由(you)于find具有(you)(you)強大(da)的功(gong)能(neng),所以它的選項(xiang)也很多(duo)(duo),其中(zhong)大(da)部分(fen)選項(xiang)都值(zhi)得我們(men)花(hua)時(shi)間(jian)來了(le)解(jie)一下。即使系(xi)(xi)統(tong)中(zhong)含(han)有(you)(you)網絡文(wen)件(jian)(jian)系(xi)(xi)統(tong)( NFS),find命令(ling)在該(gai)文(wen)件(jian)(jian)系(xi)(xi)統(tong)中(zhong)同樣有(you)(you)效,只你具有(you)(you)相(xiang)應的權限。 在運行一個(ge)非常消耗資(zi)源的find命令(ling)時(shi),很多(duo)(duo)人都傾向于把它放在后臺(tai)執行,因(yin)為遍(bian)歷一個(ge)大(da)的文(wen)件(jian)(jian)系(xi)(xi)統(tong)可(ke)能(neng)會花(hua)費很長的時(shi)間(jian)(這里是指(zhi)30G字(zi)節(jie)以上的文(wen)件(jian)(jian)系(xi)(xi)統(tong))。
1.命令格(ge)式:
find pathname -options [-print -exec -ok ...]
2.命令功能(neng):
用于在文(wen)件樹(shu)種查找(zhao)文(wen)件,并作出相應的(de)處理
3.命令參數:
pathname: find命(ming)令所查(cha)找的目錄路徑。例如用.來表示當前目錄,用/來表示系(xi)統(tong)根目錄。
-print: find命令將(jiang)匹(pi)配的文件輸(shu)出到標準輸(shu)出。
-exec: find命令(ling)對(dui)匹配的(de)(de)文件執行該參(can)數所給出的(de)(de)shell命令(ling)。相應命令(ling)的(de)(de)形式為(wei)'command' { } \;,注意{ }和\;之間的(de)(de)空(kong)格。
-ok: 和-exec的(de)作用相同,只(zhi)不(bu)過(guo)以(yi)一(yi)種更(geng)為(wei)安全的(de)模式來(lai)執(zhi)行該參數所給出(chu)的(de)shell命令,在(zai)執(zhi)行每一(yi)個命令之前(qian),都會給出(chu)提示,讓(rang)用戶來(lai)確(que)定是否(fou)執(zhi)行。
4.命令選項:
-name 按照文件名查找文件。
-perm 按照文(wen)件(jian)權限來查找文(wen)件(jian)。
-prune 使用這一選項(xiang)可以使find命令不在當(dang)前指定的(de)目錄中查找,如果(guo)同(tong)時使用-depth選項(xiang),那么(me)-prune將(jiang)被find命令忽略(lve)。
-user 按照(zhao)文(wen)件屬主來(lai)查找文(wen)件。
-group 按照(zhao)文件(jian)所屬(shu)的組來(lai)查找文件(jian)。
-mtime -n +n 按照文(wen)(wen)件的更(geng)改時間來查找文(wen)(wen)件, - n表示(shi)文(wen)(wen)件更(geng)改時間距現在(zai)n天(tian)以(yi)內,+ n表示(shi)文(wen)(wen)件更(geng)改時間距現在(zai)n天(tian)以(yi)前。find命令還有-atime和(he)(he)-ctime 選項,但(dan)它們都和(he)(he)-m time選項。
-nogroup 查找無有效所(suo)屬組的文(wen)件(jian),即(ji)該(gai)文(wen)件(jian)所(suo)屬的組在(zai)/etc/groups中不存在(zai)。
-nouser 查找(zhao)無有效(xiao)屬主(zhu)的文(wen)件,即(ji)該文(wen)件的屬主(zhu)在(zai)/etc/passwd中(zhong)不(bu)存在(zai)。
-newer file1 ! file2 查找更改時間比文(wen)件(jian)file1新但比文(wen)件(jian)file2舊的文(wen)件(jian)。
-type 查找某一類型的(de)文件,諸如:
b - 塊設備文件。
d - 目錄。
c - 字(zi)符設備文件。
p - 管道文件。
l - 符(fu)號鏈(lian)接文件。
f - 普通文件。
-size n:[c] 查(cha)(cha)找文(wen)件(jian)(jian)長(chang)度為n塊的文(wen)件(jian)(jian),帶有c時表示文(wen)件(jian)(jian)長(chang)度以字節計。-depth:在(zai)查(cha)(cha)找文(wen)件(jian)(jian)時,首(shou)先(xian)查(cha)(cha)找當前目錄(lu)中的文(wen)件(jian)(jian),然后再在(zai)其子(zi)目錄(lu)中查(cha)(cha)找。
-fstype:查找位于某一類型(xing)文(wen)件(jian)系(xi)(xi)統(tong)(tong)中(zhong)的(de)文(wen)件(jian),這(zhe)些文(wen)件(jian)系(xi)(xi)統(tong)(tong)類型(xing)通常可以在(zai)配(pei)置(zhi)文(wen)件(jian)/etc/fstab中(zhong)找到,該配(pei)置(zhi)文(wen)件(jian)中(zhong)包含了本系(xi)(xi)統(tong)(tong)中(zhong)有關(guan)文(wen)件(jian)系(xi)(xi)統(tong)(tong)的(de)信(xin)息。
-mount:在查找(zhao)文(wen)(wen)件時不跨越文(wen)(wen)件系統mount點。
-follow:如果find命令(ling)遇到(dao)符號鏈接文件,就跟蹤(zong)至鏈接所指向的文件。
-cpio:對(dui)匹配的(de)文(wen)件(jian)(jian)使用cpio命令,將這些文(wen)件(jian)(jian)備(bei)份到磁(ci)帶設備(bei)中。
另外(wai),下面(mian)三個的區(qu)別(bie):
-amin n 查找系統(tong)中(zhong)最后N分鐘(zhong)訪問的文件(jian)
-atime n 查找(zhao)系(xi)統中最后n*24小(xiao)時(shi)訪(fang)問的文件
-cmin n 查找系統中最后N分鐘被(bei)改變(bian)文件狀態的文件
-ctime n 查(cha)找(zhao)系統中(zhong)最(zui)后n*24小時(shi)被改變文件狀態的文件
-mmin n 查找系(xi)統(tong)中(zhong)最(zui)后N分(fen)鐘(zhong)被改變文(wen)件(jian)數(shu)據的文(wen)件(jian)
-mtime n 查找系統中最后n*24小時(shi)被改變文件(jian)數(shu)據的文件(jian)
5.使用實例:
實例(li)1:查找指定時間內修改過的文件
命令:
find -atime -2
輸出:
[root@peidachang ~]# find -atime -2
.
./logs/monitor
./.bashrc
./.bash_profile
./.bash_history
說明:
超(chao)找48小時內修改過(guo)的文(wen)件
實例2:根據關鍵字查找(zhao)
命令:
find . -name "*.log"
輸出:
[root@localhost test]# find . -name "*.log"
./log_link.log
./log2014.log
./test4/log3-2.log
./test4/log3-3.log
./test4/log3-1.log
./log2013.log
./log2012.log
./log.log
./test5/log5-2.log
./test5/log5-3.log
./test5/log.log
./test5/log5-1.log
./test5/test3/log3-2.log
./test5/test3/log3-3.log
./test5/test3/log3-1.log
./test3/log3-2.log
./test3/log3-3.log
./test3/log3-1.log
說明:
在當前目錄查找(zhao) 以(yi).log結尾(wei)的(de)文件。 ". "代表當前目錄
實例3:按(an)照目錄或文件的權限(xian)來查找文件
命令:
find /opt/soft/test/ -perm 777
輸出:
[root@localhost test]# find /opt/soft/test/ -perm 777
/opt/soft/test/log_link.log
/opt/soft/test/test4
/opt/soft/test/test5/test3
/opt/soft/test/test3
說明:
查找/opt/soft/test/目(mu)錄下(xia) 權限為 777的文(wen)件(jian)
實例4:按類型查找
命(ming)令:
find . -type f -name "*.log"
輸(shu)出:
[root@localhost test]# find . -type f -name "*.log"
./log2014.log
./test4/log3-2.log
./test4/log3-3.log
./test4/log3-1.log
./log2013.log
./log2012.log
./log.log
./test5/log5-2.log
./test5/log5-3.log
./test5/log.log
./test5/log5-1.log
./test5/test3/log3-2.log
./test5/test3/log3-3.log
./test5/test3/log3-1.log
./test3/log3-2.log
./test3/log3-3.log
./test3/log3-1.log
[root@localhost test]#
說(shuo)明:
查找(zhao)當目錄,以.log結尾的普通文件
實例5:查找當(dang)前所有目錄并排(pai)序
命令(ling):
find . -type d | sort
輸出:
[root@localhost test]# find . -type d | sort
.
./scf
./scf/bin
./scf/doc
./scf/lib
./scf/service
./scf/service/deploy
./scf/service/deploy/info
./scf/service/deploy/product
./test3
./test4
./test5
./test5/test3
[root@localhost test]#
實例6:按大小查找文件
命令:
find . -size +1000c -print
輸出:
[root@localhost test]# find . -size +1000c -print
.
./test4
./scf
./scf/lib
./scf/service
./scf/service/deploy
./scf/service/deploy/product
./scf/service/deploy/info
./scf/doc
./scf/bin
./log2012.log
./test5
./test5/test3
./test3
[root@localhost test]#
說明:
查找當(dang)前目錄大(da)于1K的文件
關注 熵減黑客 ,一起學習成長
