歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux查找find命令詳解

Linux查找find命令詳解

日期:2017/2/28 13:44:12   编辑:Linux教程

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

Copyright © Linux教程網 All Rights Reserved