2021-05-12 14:32:11
Linux查詢find命令詳解
Linux查詢–find命令
首先,大家如果看到有什麼不懂的地方,歡迎吐槽!!!
find命令的格式
find pathname -options [ -print -exec -ok ...]
pathname #是find命令所查詢的目錄路徑,例如.表示當前目錄,/表示根目錄
-print #表示find命令將匹配的檔案輸出到標準輸出中
-exec #表示find命令對匹配的檔案執行該引數給出的shell命令。相應命令的形式為 ‘cmd’ {} ;
-ok #它的作用和-exec一樣,只是需要使用者互動,更安全
find命令的選項
-name #按照檔名查詢檔案
-perm #按照許可權查詢檔案
-prune #使find命令不在當前指定的目錄中查詢,如果同時使用-depth選項,那麼-prune將被find命令忽略
-user #按照檔案屬主來查詢檔案
-group #按照檔案陣列來查詢檔案
-mtime -n +n #按照檔案的更改時間來查詢檔案
-n 表示從此刻算起,檔案的更改是在n天以內
+n 表示檔案的更改時間是在n天以前
find命令還有-atime和-ctime選項,和-mtime選項的時間規定類 似
-nogroup #查詢無有效屬組的檔案,即該檔案所屬的組在/etc/groups中不存在
-nouser #查詢無有效屬主的檔案,即該檔案的屬主在/etc/passwd中不存在
-newer file1 ! file2 #查詢更改時間比file1新但比file2舊的檔案
-type
b:表示塊裝置檔案 block
d:表示目錄 directory
c:表示字元裝置檔案 char
p:表示管道檔案 pipe
l:表示符號連結檔案 link
f:表示普通檔案 file
-depth #在查詢檔案時,首先查詢當前目錄中的檔案,然後再在其子目錄中查詢
-fstype #表示查詢位於某一型別檔案系統中的檔案,這些檔案系統型別通常可以在組態檔/etc/fstab中找到,該組態檔中包含了本系統中有關檔案系統的資訊
-mount #表示在查詢檔案時不跨越檔案系統的mount點
-follow #表示如果find命令遇到符號連結檔案,就跟蹤至連結所指向的檔案
-cpio #表示對匹配的檔案使用cpio命令,將這些檔案備份至磁帶裝置中
find範例:
1、在logs目錄下查詢更改時間在5日以前的檔案並刪除它們
find /logs -mtime +5 -exec rm {} ;
2、在當前目錄中查詢以.log結尾、更改時間在5日以上的檔案,並刪除,但在刪除前給出提示
find . -name “*.log” -mtime +5 -ok rm {} ;
3、先用find命令匹配所有檔名為”passwd*”的檔案,然後執行grep看看這些檔案中是否存在一個sam的字串
find / -name "passwd*" -exec grep "sam" {} ;
4、查詢當前使用者主目錄下的所有檔案
find ~
5、查詢當前目錄下644許可權的檔案
find . -perm 644
6、查詢系統當中所有長度為0的普通檔案,並列出它們的完整路徑
find / -type f -size 0 -exec ls -l {} ;
7、查詢/var/log目錄中更改時間在7日以前的普通檔案,並在刪除之前進行提示
find /var/log -type f -mtime +5 -ok rm {} ;
8、查詢當前目錄中所有屬於root組的檔案
find . -group root -exec ls -l {} ;
9、find命令將列出目錄中存取時間在7日以內且含有數位字尾的admin.log檔案
find . -name "admin.log[0-9]*" -atime -7 -exec ls -l {} ;
用xargs來配合find工作
在使用find命令的-exec選項處理匹配到的檔案時,find命令將所有匹配到的檔案一起傳遞給exec執行。但有些系統對傳遞給exec的命令長度是有限制的,這樣,在find命令執行幾分鐘之後,就會出現溢位錯誤。錯誤資訊通常是”引數列太長”或”引數列溢位”。這就是xargs命令的使用者所在,特別是與find命令一起使用
find命令把匹配到的檔案傳遞給xargs命令,而xargs命令每次只獲取一部分檔案而不是全部,不像-exec選項那樣。這樣它就可以先處理最先獲取的那一部分檔案,然後是下一批,並且如此繼續下去。
查詢root下面的每個檔案,然後使用file檢視檔案的類別
find /root/ -type f | xargs file
查詢root下面的777許可權的檔案,如果找到,都改為644許可權
find /root -perm 777 | xargs chmod 644
查詢系統中的所有檔案,並過濾出檔案中帶有rmt的檔案
find / -type f | xarfs grep rmt
grep -rl rmt / #也可以 r代表遞回,l代表只列出匹配的檔案
更詳細強大的find範例
一、使用name選項
1、在當前目錄及子目錄中查詢所有的*.txt檔案
find . -name "*.txt"
2、在當前目錄及子目錄中查詢一個大寫字母開頭的檔案
find . -name "[A-Z]*"
3、想在/etc目錄中查詢檔名以host開頭的檔案
find /etc -name "host*
4、查詢$HOME目錄中的檔案
find ~
5、想要讓系統高負荷執行,從根目錄下面查詢所有檔案
find / -name "*"
6、在當前目錄中查詢檔名以兩個小寫字母開頭,跟著是兩個數位,最後是.txt的檔案
find / -name "[a-z][a-z][0-9][0-9].txt"
二、使用perm選項
找出當前資料夾下許可權為755的檔案
find . -perm 755
三、使用user和mount選項
1、在宿主目錄下查詢屬主為sam的檔案
find ~ -user sam | xargs ls -l
2、查詢已經刪除使用者以前的檔案
find / -nouser sam
四、按照更改時間或存取時間等查詢檔案
-:限定更改時間在距今n日以內的檔案
+:限定更改時間是在n日以前的檔案
1、在根目錄下查詢更改時間為最近5日的檔案
find / -mtime -5
2、在根目錄下查詢更改時間為3日以前的檔案
find / -mtime +3
五、查詢比某個檔案新或舊的檔案
1、查詢比/root/a/a檔案新的檔案
find / -newer /root/a/a
2、查詢比wanglei檔案新的檔案
find / -newer wanglei
在進行系統維護時,我們經常遇到一種情況,即發現磁碟在不停地發生寫現象,這時候我們要定位這個正在寫的檔案,可以選擇建立一個檔案,比如test,然後用以下命令找出這個頻繁寫磁碟的檔案(最好帶上一些限制大小的引數來精確定位)
touch new1
touch new2
find / -newer new1 -o -path "/proc" -prune
找出比new1新的檔案,由於/proc目錄中的檔案一直在變化,所以可以排除
六、使用type選項
1、在/etc目錄下查詢所有的目錄
find /etc -type d | xargs file
2、在當前目錄下查詢除目錄以外的所有型別的檔案
find /etc ! -type d | xargs file
3、在/etc/目錄一下查詢所有的符號連結檔案
find /etc -type l | xargs file
八、使用size選項
dd if=/dev/zero of=/root/100M bs=100M count=1
dd if=/dev/zero of=/root/10M bs=10M count=1
dd if=/dev/zero of=/root/30M bs=30M count=1
1、查詢當前目錄下大於5M的檔案
find . -size +5M
2、查詢當前目錄下大與20M的檔案
find . -size +20M
3、查詢當前目錄下大與40M的檔案
find . -size +40M
Linux find 命令用法總結 http://www.linuxidc.com/Linux/2015-04/116854.htm
Linux下的檔案查詢命令——find http://www.linuxidc.com/Linux/2016-05/131826.htm
Linux下查詢檔案find命令 http://www.linuxidc.com/Linux/2014-10/108575.htm
文字查詢利器find的使用 http://www.linuxidc.com/Linux/2014-03/97559.htm
功能強大的find命令 http://www.linuxidc.com/Linux/2014-01/95236.htm
Linux系統find命令詳解 http://www.linuxidc.com/Linux/2014-06/103232.htm
Linux檔案搜尋命令 find http://www.linuxidc.com/Linux/2016-11/137267.htm
5分鐘學會find命令 http://www.linuxidc.com/Linux/2016-11/137051.htm
find命令基本使用一覽 http://www.linuxidc.com/Linux/2016-07/133273.htm
Linux基礎知識:find命令的使用 http://www.linuxidc.com/Linux/2016-09/134947.htm
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-01/140011.htm
相關文章