1. 程式人生 > 實用技巧 >Linux find 命令詳解

Linux find 命令詳解

簡介:
Linux find 命令用來在指定目錄下查詢檔案。任何位於引數之前的字串都將被視為欲查詢的目錄名。如果使用該命令時,不設定任何引數,則 find 命令將在當前目錄下查詢子目錄與檔案。並且將查詢到的子目錄和檔案全部進行顯示。

語法:

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

引數說明:

-name: 按照檔名查詢。
-iname:按照檔名查詢,忽略大小寫。
-perm: 按照檔案許可權來查詢檔案。
-user: 按照檔案屬主來查詢檔案。
-group:按照檔案所屬的組來查詢檔案。
-mtime -n +n:按照檔案更改時間來查詢。【-7:7天之內;+7:7天前】 -nogroup:查詢無效屬組的檔案。 -nouser: 查詢無效屬主的檔案。 -newer file1 !file2 查詢更改時間比檔案 file1 新,但比 file2 舊的檔案。 -type:查詢某一型別的檔案,如: b:塊裝置檔案 d:目錄 f:普通檔案 c:字元裝置檔案 p:管道檔案 l:符號連結檔案 s:socket -size n:[c] 查詢檔案長度為n塊的檔案,帶有c表示檔案長度以位元組計算。 -depth: 查詢檔案時,首先查詢當前目錄中檔案,然後再查詢子目錄中檔案。
-follow:查詢find命令遇到符號連結檔案,就跟蹤至連結所指向的檔案。 -mount, -xdev : 只檢查和指定目錄在同一個檔案系統下的檔案,避免列出其它檔案系統中的檔案。 -amin n: 在過去 n 分鐘內被讀取過。 -anewer file: 比檔案 file 更晚被讀取過的檔案。 -atime n : 在過去n天內被讀取過的檔案。 -cmin n : 在過去 n 分鐘內被修改過。 -cnewer file :比檔案 file 更新的檔案。 -ctime n : 在過去n天內被修改過的檔案。 -ipath p, -path p : 路徑名稱符合 p 的檔案,ipath 會忽略大小寫。
-empty : 空的檔案-gid n or -group name : gid 是 n 或是 group 名稱是 name。 你可以使用 ( ) 將運算式分隔,並使用下列運算。 exp1 -and exp2 ! expr -not expr exp1 -or exp2 exp1, exp2

查詢普通檔案和目錄:

find /home/yoon -type f  (普通檔案)

find /home/yoon -type d  (普通目錄)

只顯示1級目錄檔案且過濾自身:

find ./ -maxdepth 1  -type d  ! -name "hankyoon"

查詢一天內被訪問過的檔案:

find /home/yoon -atime -1 -type f

除了某個檔案以為,其餘的均刪除:

find /home/yoon -type f ! -name 1.sql -and -type f ! -name 1.sql | xarges rm -rf

ls | grep -v "yoon.txt" | xarges rm -rf

刪除目錄下所有檔案:

find /home/yoon -type f -exec rm -rf {} \;

find /home/yoon -type f | xarges rm -rf

刪除7天以前的普通檔案:

find /home/yoon -type f -mtime +7 -exec rm -rf {} \;

刪除7天以前的普通檔案,在刪除之前詢問它們:

find /home/yoon -type f mtime +7 -ok rm -rf {} \;

查詢系統中所有檔案長度為0的普通檔案,並列出完整路徑:

find / -type f -size 0 -exec ls -l {} \;

按照目錄或者檔案許可權來查詢:

find /home/yoon -perm 777

按照時間來查詢:

find / -ctime  +20  最近修改檔案時間20分鐘以前

find / -mtime  +7   修改檔案為7天之前的(最重要)

find / -mtime  7    修改檔案為第7天,就是往前推7天

find / -mtime  -7   修改檔案為7天之內的