1. 程式人生 > >Linux命令(七)查詢檔案或目錄 find

Linux命令(七)查詢檔案或目錄 find

   find 命令可以根據給定的路勁和表示式查詢指定的檔案或目錄。find 引數選項很多,並且支援正則表示式,功能強大。 和管道結合使用可以實現複雜的功能,是系統管理和普通使用者必須掌握的命令。 

一、find  命令格式說明

   path find命令查詢的目錄路徑。

   -print find命令將匹配到的檔案輸出到標準輸出。

   -exec find 命令對匹配的檔案執行該引數所給出的Shell命令。

   -ok 和 -exec的作用相同,只是更安全,在執行每個命令之前,都會給出提示,讓使用者來確定是否執行。

二、find命令常用引數說明

  -name   按照檔名查詢檔案

  -cpio: 對匹配的檔案使用 cpio 命令,將這些檔案備份到磁帶裝置中

  -prune 按照檔案許可權進行查詢檔案 

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

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

  -mtime -n +n 按照檔案更改的時間來查詢檔案,-n 表示更改時間距現在 n 天以內,+n 表示更改時間距現在 n 天以前

   -nogroup 查詢無效所屬組的檔案

   -nouser 查詢無效屬主檔案

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

   -follow 如果 find 查詢的為連結檔案,就跟蹤至連線所指向的檔案

   -mount 在查詢檔案時不跨越檔案系統 mount 點

   -fstype 查詢位於某一型別檔案系統中的檔案

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

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

   -type 查詢某一型別的檔案

   -amin n 查詢系統中最後 n 分鐘訪問的檔案

   -atime n 查詢系統中最後 n*24 小時訪問的檔案

   -cmin n 查詢系統中最後 n 分鐘被改變檔案狀態的檔案

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

   -mmin n 查詢系統中最後 n 分鐘被改變檔案資料的檔案

   -mtime n  查詢系統中最後 n*24 小時被改變檔案資料的檔案

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

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

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

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

   -help 顯示命令摘要(幫助)

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

三、find基本用法

   find 如不加任何引數,表示查詢當前路徑下的所有檔案和目錄

   find  -print    將結果列印到標準輸出

   find /data/log   指定路勁查詢

  find   /   -name  "abc.txt"   在系統中查詢 abc.txt 如果執行完畢沒有找到,則說明系統中不存在該檔案

   find 還支援正則表示式查詢

   find /data/logs -mame "*.log"  -type f -printf    查詢符合指定字串的檔案

  find . -name "[0-9]" -type f   查詢以數字開頭的檔案

  find / -mtime -1 |head  查詢系統內最近24小時修改過的檔案

   find / -mmin  -15|head   查詢系統內最近15 分鐘修改過的檔案

find 使用 type 選項可以查詢特定的檔案型別,常見型別如下

  b 塊裝置檔案

  d 目錄

  c 字元裝置檔案

  p 管道檔案

  l 符號連結檔案

  f 普通檔案

  find  . -type d  查詢當前路徑中的所有目錄

  find  . -type f  查詢當前路徑中的所有檔案

    find  . -type l   查詢當前路徑中的所有符號連結檔案

  更多例項將在使用中不斷補充.....

四、xargs命令

  find命令可以把匹配到的檔案傳遞給 xargs 命令執行,在使用 find 命令的 -exec 選項處理匹配到的檔案時,find將所有匹配到的檔案一起傳遞給 exec 執行。由於有些系統對能夠傳遞給 exec 的命令長度有限制,這樣會引起溢位錯誤。這時可以使用 xargs 命令。

  find / type f -print | xargs file    查詢系統中的每一個普通檔案,並用 file 命令來測試它們分別屬於哪一類檔案。

  find . -type f -name "\.log" -print | xargs rm  查詢當前目錄下的 .log 檔案,並刪除 。

  find . -type f -exec ls -l {} \;  用 ls -l 列出所有匹配到的檔案。

  find logs  -type f -mtime +5 -exec rm {} \;  查詢 log 中更改時間在 5 天前的檔案並刪除。

  find logs -type f -ok rm {} \;  查詢 log中的所有普通檔案並在刪除前確認。  

  find . -type f -name "\.log" -print | gerp "node"     查詢當前目錄下的 .log 檔案,並從查詢結果中篩選出帶有 node 字串的檔案 。