每天一個Linux命令(19)--find命令


  linux 下 find 命令在目錄結構中搜索文件,並執行指定的操作。Linux 下 find 命令提供了相當多的查找條件,功能很強大。由於 find 具有強大的功能,所以它的選項也很多,其中大部分選項都值得我們花時間來了解一下。即使系統中包含有網絡文件系統(NFS),find 命令在該文件系統中同樣有效,只要你具有相應的權限。在運行一個非常消耗資源的find 命令時,很多人都傾向於把它放在后台執行,因為遍歷一個大的文件系統可能會話費很長的時間(譬如30G以上的文件系統)。當然你也可以把它調到前台執行,看着滿屏的數據不斷翻滾,然后你擺出一副深思的表情,是不是皺眉凝視···扯遠了。。

  1.命令格式:

    find pathname  -options [-print  -exec  -ok]

  2.命令功能:

    用於在文件樹中查找文件,並作出相應的處理。

  3.命令參數:

    pathname: find 命令所查找的目錄路徑。譬如用 . 來表示當前目錄,用  /  來表示系統根目錄。

    -print:  find 命令將匹配的文件輸出到標准輸出。

    -exec:  find 命令對匹配的文件執行該參數所給出的 shell 命令,相應命令的形式為   ’command‘ {}  \;   ,注意 {}  和 “  \;” 之間的空格。

    -ok:   和 -exec 的作用相同,只不過以一種更為安全的模式來執行該參數所給出的 shell 命令,在執行每一個命令之前,都會給出提示,讓用戶來確定是否執行功能。

  4.命令選項:

    -name  按照文件名查找文件

    -perm  按照文件權限來查找文件

    -prune   使用這一選項可以使find 命令不在當前指定的目錄中查找,如果同時使用 -depth 選項,那么 -prune 將被 find 命令忽略

    -user  按照文件屬主來查找文件

    -group  按照文件所屬的組來查找文件

    -mtime    -n  +n  按照文件的更改時間來查找文件,  - n 表示更改時間距現在 n 天以內, + n 表示文件更改時間距現在 n 天以前。

        find 命令還有 -atime和-ctime 選項,但他們都和  -m  time 選項類似。

    -nogroup  查找無有效所屬組的文件,即該文件所屬的組在 /etc/groups 中不存在。

    -nouser  查找無有效屬主的文件,即該文件的屬主在 /etc/passwd 中不存在。

    -newer  file1  !  file2  查找更改時間比文件 file1 新但比文件  file2 舊的文件。

    -type   查找某一類型的文件,諸如:

          b  塊設備文件

          d  目錄

          c  字符設備文件

          p  管道文件

          l  符號鏈接文件

          f  普通文件

    -size  n:[c]  查找文件長度為 n 塊的文件,帶有 c 時表示文件長度以字節計。 -depth:在查找文件時,首先查找當前目錄中的文件,然后再在其子目錄中查找。

    -fstype    查找位於某一類型文件系統中的文件,這些文件系統類型通常可以在配置文件 /etc/fstab 中找到,該配置文件中包含了本系統中有關文件系統的信息。

    -mount  在查找文件是不跨越文件系統mount點

    -follow   如果find 命令遇到符號鏈接文件,就跟蹤至鏈接所指向的文件。

    -cpio  對匹配的文件使用cpio命令,將這些文件備份到磁帶設備中。

    另外,下面三個的區別:

    -amin  n  查找系統中最后N分鍾訪問的文件

    -atime  n  查找系統中最后 n*24 小時訪問的文件

    -cmin  n  查找系統中最后 N 分鍾被改變文件狀態的文件

    -ctime  n  查找系統中最后 n*24小時被改變文件狀態的文件

    -mmin  n  查找系統中最后 N 分鍾被改變文件數據的文件

    -mtime  n   查找系統中最后 n*24 小時被改變文件數據的文件  

  5.使用實例:

    實例1:查找指定時間內修改過的文件

    命令:

      find  -atime  -2  查找48小時內修改過的文件

    實例2:根據關鍵字查找

    命令:

      find  .   -name  "*.log"  在當前目錄查找以 .log 結尾的文件。  “.” 代表當前目錄

    實例3:按照目錄或文件的權限來查找文件

    命令:

      find   /opt/soft/test  -perm  777   查找/opt/soft/test 目錄下, 權限為   777 的文件

    實例4:按照類型查找

    命令:

      find  .  -type   f   -name  "*.log"  查找當前目錄中以 .log 結尾的 普通文件

    實例5:查找當前所有目錄並排序

    命令:

      find  .  -type d | sort  組合命令,其實只要知道 find [PATH]  [option] [argument] 就可以了, “| 管道”  “sort”  命令隨時可以跟任何命令組合使用。

    實例6:按大小查找文件

    命令:

      find  .   -size    +1000c  -print

  

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM