天天看點

Linux檔案搜尋工具find

Linux檔案搜尋工具find

一般格式:find [options] [查找路徑] [查找條件] [處理動作]

               [options]:一般不加

               [查找條件]:

                       -name filename,按檔案名查找,支援通配符

                       -iname filename,按檔案名查找,不區分大小寫

                       -user username: 根據屬主查找

                       -group groupname: 根據屬組查找

                       -nouser:查找沒有屬主的檔案;

                       -nogroup: 查找沒有屬組的檔案;

                       -type: 根據檔案類型查找

                       -size: 根據檔案大小查找

                       -atime:根據檔案通路時間

                       -mtime:根據檔案修改時間

                       -perm:根據檔案權限

                       多條件可組合使用

                           -a: 與,同時滿足

                           -o: 或,

                           -not, !:非,取反

               [處理動作]:

                       1,-exec COMMAND {} \;  對查找到的檔案執行指定的指令

                          -exec  \;            是固定的格式後面那個分号必須有

                          {}                 表示由find找到的内容

                          COMMAND              表示你要對找到的内容執行的指令

                       2,“|”管道和xargs一起用

                           因為管道傳遞的是字元串,是以在find查找的檔案

                           後用管道去處理這些檔案是不會成功的

例如:

# find /etc/ -name passwd |ls -l

Linux檔案搜尋工具find

這個指令隻表示去找/etc/下名為passwd的檔案;然後

在目前目錄執行一次ls -l指令

是以如果想要用ls -l去檢視find找到的檔案可以這樣寫

# find /etc/ -name passwd |xargs ls -l

Linux檔案搜尋工具find

當然用上面的-exec \;也可以實作這樣的功能,但是

xargs有它的優點,就是會把上面傳遞下來的參數一點

一點的傳遞給後面的指令。是以當你找到很多的小檔案

并試圖删除的時候rm指令一次接收不了那麼多的檔案

就可以用xargs指令了。關于xargs的更多用法可以看man

和google

一般用法:  

1,查找查找/etc/下檔案名為passwd的檔案

# find /etc/ -name passwd

Linux檔案搜尋工具find

 2,查找/etc/下檔案名包含passwd的檔案

# find /etc/ -name *passwd*

Linux檔案搜尋工具find

 3,查找/tmp/下root使用者的檔案并用ls -l顯示出來

# find /tmp/ -user root -exec ls -l \;

Linux檔案搜尋工具find

 4, 查找目前系統上不屬于任何使用者的檔案

# find / -nouser -exec ls -l {} \;

Linux檔案搜尋工具find

 5,查找/boot/目錄下大于5M的檔案

# find /boot/ -size +5M |xargs ls -hl

Linux檔案搜尋工具find

這裡的+5M表示大于5M,5M表示4M到5M之間

-5M就表示小于4M

# find ./ -size 5M -exec ls -lh {} \;

Linux檔案搜尋工具find

 6,查找/bin/目錄下帶有特殊權限的檔案,即suid,sgid,sbit

# find /bin/ -perm +7000 |xargs ls -l

Linux檔案搜尋工具find

這裡的+表示任何一類使用者的任何一位權限比對都行

-表示每類使用者的指定要檢查的權限位都比對不寫+或—

表示精确比對。

 7,查找/boot/目錄下的軟連結檔案

# find /boot/ -type l |xargs ls -l

Linux檔案搜尋工具find

f: 普通檔案

d: 目錄

b: 塊裝置

c: 字元裝置

l: 符号連結檔案

p: 命名管道

s: 套接字

 8,查找/etc/目錄下最近4天修改過的檔案

# find /etc/ -mtime -4 |xargs stat

Linux檔案搜尋工具find

檔案很多我就不完全截圖了

-4表示4天以内,+4表示五天以前

4表示4天到5天之間

還可以使用amin,mmin,cmin來表示分鐘

 9,關于組合條件查找

 查找/sbin/目錄下既有特殊權限又在5天累修改過的檔案

# find /sbin/ -perm +7000 -mtime -5|xargs stat

Linux檔案搜尋工具find

 -a表示“與”可省略,-o表示“或”不可省

 -not表示“非”

可能有的地方寫的不對,希望大家多多指點。。。

繼續閱讀