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

這個指令隻表示去找/etc/下名為passwd的檔案;然後
在目前目錄執行一次ls -l指令
是以如果想要用ls -l去檢視find找到的檔案可以這樣寫
# find /etc/ -name passwd |xargs ls -l
當然用上面的-exec \;也可以實作這樣的功能,但是
xargs有它的優點,就是會把上面傳遞下來的參數一點
一點的傳遞給後面的指令。是以當你找到很多的小檔案
并試圖删除的時候rm指令一次接收不了那麼多的檔案
就可以用xargs指令了。關于xargs的更多用法可以看man
和google
一般用法:
1,查找查找/etc/下檔案名為passwd的檔案
# find /etc/ -name passwd
2,查找/etc/下檔案名包含passwd的檔案
# find /etc/ -name *passwd*
3,查找/tmp/下root使用者的檔案并用ls -l顯示出來
# find /tmp/ -user root -exec ls -l \;
4, 查找目前系統上不屬于任何使用者的檔案
# find / -nouser -exec ls -l {} \;
5,查找/boot/目錄下大于5M的檔案
# find /boot/ -size +5M |xargs ls -hl
這裡的+5M表示大于5M,5M表示4M到5M之間
-5M就表示小于4M
# find ./ -size 5M -exec ls -lh {} \;
6,查找/bin/目錄下帶有特殊權限的檔案,即suid,sgid,sbit
# find /bin/ -perm +7000 |xargs ls -l
這裡的+表示任何一類使用者的任何一位權限比對都行
-表示每類使用者的指定要檢查的權限位都比對不寫+或—
表示精确比對。
7,查找/boot/目錄下的軟連結檔案
# find /boot/ -type l |xargs ls -l
f: 普通檔案
d: 目錄
b: 塊裝置
c: 字元裝置
l: 符号連結檔案
p: 命名管道
s: 套接字
8,查找/etc/目錄下最近4天修改過的檔案
# find /etc/ -mtime -4 |xargs stat
檔案很多我就不完全截圖了
-4表示4天以内,+4表示五天以前
4表示4天到5天之間
還可以使用amin,mmin,cmin來表示分鐘
9,關于組合條件查找
查找/sbin/目錄下既有特殊權限又在5天累修改過的檔案
# find /sbin/ -perm +7000 -mtime -5|xargs stat
-a表示“與”可省略,-o表示“或”不可省
-not表示“非”
可能有的地方寫的不對,希望大家多多指點。。。