find用法
文件查找命令:which威根,locate徘六,find
1.which命令
查找二進(jìn)制數(shù)或二進(jìn)制命令锄贼,由PATH給出
2.loacte
特點(diǎn):
1.非實(shí)時(shí),每天在系統(tǒng)上生成數(shù)據(jù)庫注簿,通過數(shù)據(jù)庫查詢
2.模糊查詢
3.updatedb契吉,實(shí)時(shí)查詢需要進(jìn)行數(shù)據(jù)的更新,更新一般需要幾分鐘時(shí)間诡渴,所以一般是在晚上
4.查找速度快
3.find
特點(diǎn):
1.實(shí)時(shí)查找
2.文件遍歷
3.精確匹配
4.速度較慢
查找方式:
3.1 根據(jù)文件名查找
-name:
-iname:
find . -name bigram.c code.c frcode.c locate.c -print
3.2 根據(jù)文件的屬主捐晶,屬主查找
-user:屬主
-group:屬組
-uid:根據(jù)文件的uid實(shí)現(xiàn)精確查找
-gid:根據(jù)文件的gid實(shí)現(xiàn)精確查找
-nouser,-nogroup:對(duì)于已經(jīng)被刪除用戶名或用戶組的文件妄辩,系統(tǒng)只會(huì)保留相應(yīng)的gid惑灵,uid號(hào)碼用以標(biāo)識(shí),而如果此時(shí)新建一個(gè)用戶名就用可能取得某些文件的管理權(quán)限恩袱,出于安全的考慮泣棋,所以要對(duì)這些文件進(jìn)行查找胶哲,保證安全
3.3 命令的組合用法
與:-a
或:-o
非:-not畔塔,-!
3.4 根據(jù)文件類型進(jìn)行查找:-type [文件類型]
f:普通文件
d:目錄文件
l:符號(hào)鏈接文件
s:套接字文件
b:塊處理設(shè)備文件
c:字符設(shè)備文件
p:管道文件
find /var -type s #查找/var下的套接字文件
3.5 根據(jù)文件大小進(jìn)行查找
-size [+或-] [文件大小]
查找比SIZE還要大(+)或者醒煊臁(-)的文件
文件大小的表示:c:代表byte澈吨,k:代表1024bytes,M:代表1024k
3.6 根據(jù)文件的時(shí)間進(jìn)行查找
1.mtime:當(dāng)文件的“內(nèi)容數(shù)據(jù)” 更改時(shí)寄摆,就會(huì)更新這個(gè)時(shí)間谅辣。內(nèi)容數(shù)據(jù)指的是文件的內(nèi)容,而不是文件的屬性與權(quán)限
2.ctime:當(dāng)文件的狀態(tài)發(fā)生變化時(shí)婶恼,就會(huì)更新這個(gè)數(shù)據(jù)桑阶,比如:權(quán)限與屬性發(fā)生變化
3.atime:當(dāng)文件的內(nèi)容被讀取時(shí)柏副,就會(huì)更新這個(gè)時(shí)間
以天為單位:-ctime,-atime,-mtime
以分鐘為單位:-cmin,-amin,-mmin
例:
1.從現(xiàn)在開始到24小時(shí)之前有過改動(dòng)的文件全部列出來
find / -mtime 0
2.尋找/etc下面的文件,如果文件日期比/etc/passwd新就列出來
-newer用在分辨兩個(gè)文件之間的新舊關(guān)系
find /etc -newer /etc/passwd
3.尋找四天前的那一天被改動(dòng)的文件
find /var -mtime 4
4.四天之內(nèi)被改動(dòng)過的文件
find /var -mctime -4
+4:代表大于等于五天前的文件名:find /var -mtime +4
-4: 代表小于等于四天內(nèi)的文件名
4:代表4~5天那一天的文件
3.7 根據(jù)文件權(quán)限進(jìn)行查詢:-prem [option]
1.-perm mode
精確查找蚣录,文件權(quán)限正好等于mode割择,mode為類似于chmod的屬性值
2.-perm -mode
每一類對(duì)象都必須擁有其指定的權(quán)限標(biāo)準(zhǔn)
3.-perm /mode
任何一類(u,g,o)對(duì)象的權(quán)限只要有一位匹配即可
find . -perm /u+w,g+w
find . -perm /u=w,g=w
find . -perm /220
find . -perm -444 -perm /222 ! -perm /111
find . -perm -a+r -perm /a+w ! -perm /a+x
3.8 其他相關(guān)命令
1.-exec command:
command 為其他命令,-exec可以接其他的命令來處理查詢結(jié)果
2.-delete:刪除查找到的文件
3.-fls /path/to/somefile:
查找到的文件的長格式信息保存至指定的文件夾
find /var/log -ctime -4 -fls /tmp/test/abc
4.-ok command '{}' :
對(duì)查找的文件執(zhí)行由command指定的命令萎河,對(duì)于每個(gè)文件執(zhí)行命令之前荔泳,都會(huì)交互式要求用戶確認(rèn)
5.-exec command '{}' :
對(duì)查找到的每個(gè)文件執(zhí)行由command執(zhí)行的命令
{}:用于引用查找到的文件名稱自身;注意:find傳遞查找到的文件至后面指定的命令時(shí)虐杯,查找到的所有符合的文件一次性傳遞給后面的命令
3.9 練習(xí)
1.查找/var 目錄下屬主為root玛歌,且屬組為mail的所有文件或目錄并列出
find /var -user root -group mail -ls
2.查找/usr 目錄下不屬于root、bin擎椰、hadoop的所有文件或目錄
find /usr -not -user root -not -user hadoop -not -user bin -ls
find /usr -not \( -user root -o -user hadoop -o -not -user bin \) -ls
3.查找/etc目錄下最近一周內(nèi)其內(nèi)容修改過支子,同時(shí)屬主不為root,也不為hadoop的文件或目錄
find /etc -mtime -7 -a -not \( -user root -o -user hadoop \) -ls
4.查找當(dāng)前系統(tǒng)上沒有屬主或?qū)俳M确憨,且最近一周內(nèi)曾被訪問過的文件或目錄
find / -ctmie -7 -a -nouser -a nogroup
5.查找/etc目錄下大于1M且類型為普通文件的所有文件
find /etc -size +1M -a -type f -ls
6.查找/etc目錄下所有用戶都沒有寫權(quán)限的文件
find /etc -not -perm /222 -ls
7.查找/etc目錄下至少有一類用戶沒有執(zhí)行權(quán)限的文件
find /etc -not -perm -111 -ls
8.查找/etc/init.d/目錄下译荞,所有用戶都有執(zhí)行權(quán)限,且其他用戶有寫權(quán)限的文件
find /etc/init.d -prem /113 -ls
9.查找/tmp/test/y目錄下在100分鐘內(nèi)修改過的文件休弃,并刪除
find /tmp/test/y -cmin -100 -print | xargs /bin/rm -fr
find /tmp/test/y -cmin -100 -delete
find /tmp/test/y -cmin -100 -ok rm -fr '{}' \; #需要詢問
find /tmp/test/y -cmin -100 -exec rm -fr '{}' \;
10.查找/var/log目錄下為文件類型且在10分鐘內(nèi)被修改過的文件吞歼,并列出
find /var/log -type f -cmin -10 -exec ls -l '{}' \;
11.查找/var/log下的在四天內(nèi)被修改過的文件并把它們的長格式信息保存至/tmp/test/abc
find /var/log -ctime -4 -fls /tmp/test/abc