天天看點

find

1、搜檔案

find / -name filename

2、在某個目錄(如/home)下查找檔案file

find /home -name file

3、過濾報錯搜檔案

find / -name access_log 2>/dev/null

4、模糊檔案名查找

find /etc -name '*srm*'

5、使用and ,or 分别表示“與”和“或”的關系

a、在/tmp目錄中查找大于100000000位元組并且在48小時内修改的某個檔案

find /tmp -size +10000000c -and -mtime +2

b、在/tmp目錄中查找屬于fred或者george這兩個使用者的檔案

find / -user fred -or -user george

6、使用“非”的關系來查找檔案

a、在/tmp目錄中查找所有不屬于panda的檔案

find /tmp ! -user panda

7、查找到httpd.conf檔案後立即在螢幕上顯示httpd.conf檔案資訊

find / -name "httpd.conf" -ls

-exec command 查找并執行指令

-fprint file 列印檔案完整檔案名

-fprint0 file 列印檔案完整檔案名包括空的檔案

-fprintf file format 列印檔案格式

-ok command 給使用者指令執行操作,根據使用者的Y 确認輸入執行

-printf format 列印檔案格式

-ls 顯示同種檔案格式的檔案

-amin n 查找系統中最後N分鐘通路的檔案

-atime n 查找系統中最後n*24小時通路的檔案

-cmin n 查找系統中最後N分鐘被改變狀态的檔案

-ctime n 查找系統中最後n*24小時被改變狀态的檔案

-empty 查找系統中空白的檔案,或空白的檔案目錄,或目錄中沒有子目錄的檔案夾

-false 查找系統中總是錯誤的檔案

-fstype type 查找系統中存在于指定檔案系統的檔案,例如:ext2 .

-gid n 查找系統中檔案數字組 ID 為 n的檔案

-group gname 查找系統中檔案屬于gnam檔案組,并且指定組和ID的檔案

8、 find / -amin -10 # 查找在系統中最後10分鐘通路的檔案

find / -atime -2 # 查找在系統中最後48小時通路的檔案

find / -empty # 查找在系統中為空的檔案或者檔案夾

find / -group cat # 查找在系統中屬于 groupcat的檔案

find / -mmin -5 # 查找在系統中最後5分鐘裡修改過的檔案

find / -mtime -1 #查找在系統中最後24小時裡修改過的檔案

find / -nouser #查找在系統中屬于廢棄使用者的檔案

find / -user fred #查找在系統中屬于FRED這個使用者的檔案

9、查找檔案大小為1,500 bytes

find / -size 1500c (字元 c 表明這個要查找的檔案的大小是以bytes為機關)

10、查找出大于10000000位元組的檔案并顯示出來

find/ -size +10000000c (指令中的“+”是表示要求系統隻列出大于指定大小的檔案,而使用“-”則表示要求系統列出小于指定大小的檔案)

11、在目前(.)目錄技巧子目錄中查找一個名叫fred的檔案(最大的查詢目錄級别為2)

find . -maxdepth 2 -name fred

-daystart 測試系統從今天開始24小時以内的檔案,用法類似-amin

-depth 使用深度級别的查找過程方式,在某層指定目錄中優先查找檔案内容

-follow 遵循通配符連結方式查找; 另外,也可忽略通配符連結方式查詢

-help 顯示指令摘要

-maxdepth levels 在某個層次的目錄中按照遞減方法查找

-mount 不在檔案系統目錄中查找, 用法類似 -xdev.

-noleaf 禁止在非UNUX檔案系統,MS-DOS系統,CD-ROM檔案系統中進行最優化查找

-version 列印版本數字

12、删除以r開頭的大小為0的檔案指令

find . -name "r*" -type f -size 0c | xargs -n 1 rm -f

====================

1 指令格式:

$ find <指定目錄> <指定條件> <指定動作>

最常見示例:查找檔案名(忽略大小寫)

$find . -iname sqlquery.java

1.1 <指定目錄>:

所要搜尋的目錄及其所有子目錄。預設為目前目錄。find預設遞歸指定目錄。目錄可以有多個,目錄之間要用空格分開。

[[email protected]]$find /etc /tmp /root -name passwd

1.2 <指定條件>:

所要搜尋的檔案的特征。

[1]根據檔案名查找

-name 按照檔案名查找

-iname 根據檔案名查找,但是不區分大小寫

-prune 不在目前指定的目錄中查找

-depth 在查找檔案時,首先查找目前目錄中的檔案,然後再在其子目錄中查找

[2]根據檔案所屬使用者群組來查找檔案

-user 按照檔案屬主來查找檔案

$find / -user fred //查找在系統中屬于FRED這個使用者的檔案

-group 按照檔案所屬的組來查找檔案

$find / -group cat //查找在系統中屬于group組名cat的檔案

[3]根據uid 和 gid來查找使用者

-uid

#find /tmp -uid 500 //查找uid是500 的檔案

-gid

#find /tmp -gid 1000 // 查找gid是1000的檔案

[4]-a,-o,-not的使用

-a 連接配接兩個不同的條件(兩個條件必須同時滿足)

#find /tmp -name "*.sh" -a -user root

-o 連接配接兩個不同的條件(兩個條件滿足其一即可)

#find /tmp -name "*.sh" -o -user root

-not 對條件取反的

#find /tmp -not -user root

[5]根據檔案時間戳的相關屬性來查找檔案

-atime 最近一次通路時間 機關:天

-mtime 最近一次内容修改時間 機關:天

-ctime 最近一次屬性修改時間 機關:天

-amin 最近一次通路時間 機關:分鐘

-mmin 最近一次内容修改時間 機關:分鐘

-cmin 最近一次屬性修改時間 機關:分鐘

-newer file1 ! file2 查找更改時間比檔案file1新但比檔案file2舊的檔案

#find /tmp -atime +5 //表示查找在五天内沒有通路過的檔案

#find /tmp -atime -5 //表示查找在五天内通路過的檔案

[6]根據檔案類型來查找檔案

-type 查找某一類型的檔案

檔案類型:

f 普通檔案

d 目錄

l 符号連結檔案

c 字元裝置檔案

p 管道檔案

b 塊裝置檔案

s socket檔案

#find /tmp -type s

[7]根據大小來查找檔案

-size n[c] 查找檔案長度為n塊的檔案,帶有c時表示檔案長度以位元組計

#find /tmp -size 2M //查找在/tmp 目錄下等于2M的檔案

#find /tmp -size +2M //查找在/tmp 目錄下大于2M的檔案

#find /tmp -size -2M //查找在/tmp 目錄下小于2M的檔案

$find . -size +1000000c //在目前目錄下查找檔案長度大于1 M位元組的檔案

$find / -empty //查找在系統中為空的檔案或者檔案夾

[8]根據檔案權限查找檔案

-perm

#find /tmp -perm 755 //查找在/tmp目錄下權限是755的檔案

#find /tmp -perm +222 //表示隻要有一類使用者(屬主,屬組,其他)的比對寫權限就行

#find /tmp -perm -222 //表示必須所有類别使用者都滿足有寫權限

[10]-nouser和-nogroup

-nogroup 查找無有效所屬組的檔案,即該檔案所屬的組不存在

-nouser 查找無有效屬主的檔案

#find / -nogroup -a -nouser //在整個系統中查找既沒有屬主又沒有屬組的檔案(這樣的檔案通常是很危險的,作為系統工程師的我們應該及時清除掉)

$find / -nouser //查找在系統中屬于廢棄使用者的檔案

1.3 <指定動作>:

對搜尋結果進行特定的處理。

-print //預設情況下的動作

-ls //查找到後用ls 顯示出來

-ok [commend] //查找後執行指令的時候詢問使用者是否要執行

-exec [commend] //查找後執行指令的時候不詢問使用者,直接執行

注意-ok和-exec指令将指令行上後續的參數作為他們參數的一部分,直到被\;序列終止。魔術字元串{}是-ok和-exec指令的一個特殊類型的參數,它将被目前檔案的完整路徑取代。

#find /tmp -atime +30 –exec rm –rf {} \; //删除查找到的超過30天沒有通路過檔案

這裡要注意{ }的使用:替代查找到的檔案

#find /tmp -name "*.old" | xargs chmod 700

2 指令舉例

搜尋/etc目錄下的檔案名包含del的檔案。

$find /etc -name '*del*'

系統查找到"config.py"檔案後即時在螢幕上顯示"config.py"檔案資訊。

$find . -name "config.py" -ls

搜尋目前目錄中,所有過去10分鐘中更新過的普通檔案。如果不加-type f參數,則搜尋普通檔案+特殊檔案+目錄。

$ find . -type f -mmin -10

find ./ ! -name "*.gz" ! -name '.'|xargs rm -fr 

<b>點我親╭(╯3╰)╮</b>