linux文本查找工具

find用法


文件查找命令:which,locate,find

1.which命令

查找二進(jìn)制數(shù)或二進(jìn)制命令,由PATH給出

2.loacte

特點(diǎn):
1.非實(shí)時,每天在系統(tǒng)上生成數(shù)據(jù)庫,通過數(shù)據(jù)庫查詢
2.模糊查詢
3.updatedb,實(shí)時查詢需要進(jìn)行數(shù)據(jù)的更新,更新一般需要幾分鐘時間,所以一般是在晚上
4.查找速度快

3.find

特點(diǎn):
1.實(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:對于已經(jīng)被刪除用戶名或用戶組的文件,系統(tǒng)只會保留相應(yīng)的gid,uid號碼用以標(biāo)識,而如果此時新建一個用戶名就用可能取得某些文件的管理權(quán)限,出于安全的考慮,所以要對這些文件進(jìn)行查找,保證安全

3.3 命令的組合用法

與:-a
或:-o
非:-not,-!

3.4 根據(jù)文件類型進(jìn)行查找:-type [文件類型]

f:普通文件
d:目錄文件
l:符號鏈接文件
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ù)文件的時間進(jìn)行查找

1.mtime:當(dāng)文件的“內(nèi)容數(shù)據(jù)” 更改時,就會更新這個時間。內(nèi)容數(shù)據(jù)指的是文件的內(nèi)容,而不是文件的屬性與權(quán)限
2.ctime:當(dāng)文件的狀態(tài)發(fā)生變化時,就會更新這個數(shù)據(jù),比如:權(quán)限與屬性發(fā)生變化
3.atime:當(dāng)文件的內(nèi)容被讀取時,就會更新這個時間

以天為單位:-ctime,-atime,-mtime
以分鐘為單位:-cmin,-amin,-mmin

例:

1.從現(xiàn)在開始到24小時之前有過改動的文件全部列出來

find / -mtime 0 

2.尋找/etc下面的文件,如果文件日期比/etc/passwd新就列出來
-newer用在分辨兩個文件之間的新舊關(guān)系

find /etc -newer /etc/passwd

3.尋找四天前的那一天被改動的文件

find /var -mtime 4 

4.四天之內(nèi)被改動過的文件

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
每一類對象都必須擁有其指定的權(quán)限標(biāo)準(zhǔn)

3.-perm /mode
任何一類(u,g,o)對象的權(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 '{}' :
對查找的文件執(zhí)行由command指定的命令,對于每個文件執(zhí)行命令之前,都會交互式要求用戶確認(rèn)

5.-exec command '{}' :
對查找到的每個文件執(zhí)行由command執(zhí)行的命令

{}:用于引用查找到的文件名稱自身;注意:find傳遞查找到的文件至后面指定的命令時,查找到的所有符合的文件一次性傳遞給后面的命令

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)容修改過,同時屬主不為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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容