首頁 > 軟體

Linux查詢find命令詳解

2020-06-16 17:23:06

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


IT145.com E-mail:sddin#qq.com