linux中的find命令功能非常強大,他可以根據各種不同的參數搜尋硬碟尋找檔案或目錄。他的基本命令格式如下:
find [PATH] [option] [action]
一、選項
1、與時間有關的參數
-atime n: n為數字,含義為在n天之前的“一天之內”訪問(access)過的檔案。
-ctime n: n為數字,含義為在n天之前的“一天之內”修改(change)過z狀態的檔案。
-mtime n: n為數字,含義為在n天之前的“一天之內”修改(modification)過的檔案。
-mtime -n +n: n為數字,-n含義為在n天之內修改(modification)過的檔案,+n含義為在n天之前修改(modification)過的檔案。同理應用到-ctime, -atime。
-newer file: file為一個存在的檔案,只要比檔案file新,就會被列出來。
2、與使用者或使用者組名稱有關的參數
-uid n: n為數字,這個數字是使用者賬戶的id,即UID,這個UID記錄在/etc/passwd裡邊與賬戶名稱對應的數字。
-gid n: n為數字,這個數字是使用者組的id,即GID,這個GID記錄在/etc/group裡邊。
-user name: name為使用者帳號名稱。如zhangzhiwi
-group name: name為使用者組名稱。如users.
-nouser: 尋找檔案的擁有者不在/etc/passwd中的檔案。
-nogroup: 尋找檔案的擁有使用者組不在/etc/group中的檔案。某些自行安裝的軟體可能沒有檔案擁有者和使用者組。
3、與檔案許可權及名稱有關的參數
-name filename: 搜尋檔案名稱為filename的檔案。
-type typeid: 搜尋檔案類型為typeid的檔案。主要類型有
f 普通檔案類型
b 塊裝置檔案類型
c 字元裝置檔案類型
d 目錄類型
l 串連檔案內容
s 通訊端類型
p FIFO,管道等類型。
-size [+-]filesize: 搜尋比filesize大(+)或者小(-)的檔案。filesize要有規則。c表示byte,k表示1024bytes。
例如,要尋找目前的目錄下大於50k的檔案: find . -size +50k
-perm mode: 搜尋檔案屬性剛好為mode的檔案。例如-perm 755。則檔案屬性為rwxr-xr-x的檔案將被搜出來。
-perm -mode: 搜尋檔案屬性包含全部mode的檔案。例如搜尋-perm -755。則檔案屬性為rwxrwxrwx(777)的檔案也會被搜尋出來。
-perm +mode: 搜尋檔案屬性包含任一mode的檔案。例如搜尋-perm +755。則檔案屬性為rwx------(700)的檔案也會被搜尋出來。
二、附加操作。
find命令尋找出檔案後,常常需要對這些檔案進行處理,例如刪除掉或者列印出來等等。此時就需要exec或者ok來配合find來進行處理。其基本命令為:
find [PATH] [OPTION] -exec(-ok) command {} /;
-exec和-ok的區別是-exec提醒使用者,-ok不提醒。其後是command命令,然後是一對兒{},之後有個空格,然後是/和;
例如尋找目前的目錄下所有名稱為“.svn”的目錄並刪除它:
find . -name .svn -type d -exec rm -rf {} /;
三、使用xargs。
xargs是一條Unix和類Unix作業系統的常用命令。它的作用是將參數列錶轉換成小塊分段傳遞給其他命令,以避免參數列表過長的問題。他配合grep命令使我們經常會用到的一個用法:尋找某個目錄下包含某個字串的檔案。
find . –type f|xargs grep ‘mystring’。
關於find命令,更具體的用法請參考:http://www.linuxsir.org/main/node/137