/usr/bin/find:

  1. 所在系統及路徑. 系統:redhat linux 6.2+cle0.9 路徑:/usr/bin/find

  2. shared library. libc.so.6 => /lib/libc.so.6 (0x40019000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
    Version information:
    /usr/bin/find:
    libc.so.6 (GLIBC_2.1) => /lib/libc.so.6 libc.so.6 (GLIBC_2.0) => /lib/libc.so.6 /lib/libc.so.6:

    ld-linux.so.2 (GLIBC_2.1.1) => /lib/ld-linux.so.2 ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2 ld-linux.so.2 (GLIBC_2.0) => /lib/ld-linux.so.2

  3. 主要用途說明. find就是一個依照指定條件尋找檔案或目錄的工具.可由指定的目錄找起, 將符合所指定的關鍵字的所有檔案或目錄輸出顯示到螢幕上.

用法:

find 起始資料夾 [陳述式]

  1. 參數及其意義. 因其選項參數等過於複雜,故先簡列一部分於下: 常用選項及代表檔案條件: -amin 指定時間內曾被存取過的檔案,單位為分鐘

-atime

指定時間內曾被存取過的檔案,單位為24小時

-exec <指令>

當找到符合條件的檔案,就執行該指令,指令結尾必須是";"

-mmin

指定時間內曾異動過的檔案,單位為分鐘

-mtime

指定時間內曾被異動過的檔案,單位為24小時

-nouser

檔案不屬於本機上之任何User的檔案

-ok <指令>

用法同-exec,唯每一個指令執行前均會詢問使用者

-print

將符合條件的檔案資料由終端機顯示出來

-size <檔案大小>

符合檔案大小的檔案,單位為512Byte(Block),檔案大小前加"+"號 代表大於這個 size,"-"代表小於這個size

-user

屬於"username"的檔案

※以上的範例見Example1.

詳細資料如下:
[陳述式]主要以options,tests,action組成,分述如下:

  1. options 所有的option都會傳回true,在任何位置都會發生作用.不過為了清楚的表示, 最好還是放在expression的開頭.

-daystart

測量時間(有 -amin, -atime, -ctime, -mmin & -mtime)由今天開始而非24小 時之前.

-depth

在處理資料夾本身前先處理其內容.

-follow

不參照symbolic links. 暗示類 -noleaf.

-help, --help

印出find的使用概要並離開.

-maxdepth levels

由命令列向下找至多levels(一個非負的整數)層的資料夾. 而 -maxdepth 0 意指只應用tests和actions到命令列的參數上.

-mindepth levels

當層數小於levels(一個非負的整數) 時不應用tests或actions. 而-mindepth 1 意指處理命令列外的所有檔案.

-mount

不參照其它檔案系統的資料夾.另一個替換的名字 -xdev可能為其它版本之find.

-noleaf

不處理比其hard link數少二個子資料夾以上的資料夾.

-version, --version

印出find的版本號碼並離開.

-xdev

不參照其它檔案系統的資料夾.

  1. tests 引數顯示如下: +n 比n大 -n 比n小 n 相當於n

-amin n

最近一次存取在n分鐘之前.

-anewer file

檔案最近一次存取比檔案被修改的時間近的多.此tests只有在-follow在-anewer 前時才能使用.

-atime n

檔案最近一次存取的時間在n*24小時前.

-cmin n

檔案況態最近一次修改是在n分鐘前.

-cnewer file

檔案狀態最後一次修改的時間較最後一次存取近很多.此tests只有-follow在 -cnewer前時才能使用.

-ctime n

檔案狀態最近一次改變的時間在n*24小時前.

-empty

檔案為空且其為一般檔案或資料夾.

-false

恆為偽.

-fstype type

檔案在型態為type的檔案系統上.

-gid n

檔案的numeric group ID 為n.

-group gname

檔案屬於gname的group(numeric group ID也可以).

-ilname pattern

類似-lname,但相符方面較不嚴格.

-iname pattern

類似-name,但相符方面較不嚴格.  
例如:the patterns o*' and ??' match the
file names oo', OO', oo', Oo', etc.

-inum n

檔案之inode number為 n.

-ipath pattern

類-path,但相符方面較不嚴格.

-iregex pattern

類-regex,但相符方面較不嚴格.

-links n

檔案有n個連結.

-lname pattern

檔案為symbolic link其內容符合shell樣式pattern.但不能處理/'或.'

-mmin n

檔案的內容最近一次修改是在n分鐘前.

-mtime n

檔案的內容最近一次修改是在n*24小時前.

-name pattern

檔名的基底(路徑去掉帶領的資料夾)符合shell樣式pattern.

-newer file

比所給的檔案其修改日期還要晚的檔案.

-nouser

沒有使用者符合檔案的numeric user ID.

-nogroup

沒有群組符合檔案的numeric group ID.

-path pattern

檔名符合shell樣式pattern.

-perm mode

檔案的permission bits為exactly模式.

-perm -mode

所有permission bitsmode 均對檔案被設定.

-perm +mode

任何permission bitsmode 均對檔案被設定.

-regex pattern

檔名符合一般的表示方法.

-size n[bckw]

檔案使用n 單位的空間.

-true

恆為真.

-type c

檔案為 c 型態.(b:block,c:character,d:directory,p:name pipe, f:regular file,l:symbolic link,s:socket)

-uid n

檔案的numeric user ID為n.

-used n

檔案最近一次被存取的時間為狀態被改變後的n天.

-user uname

檔案被uname所擁有(numeric user ID也可以)

-xytpe c

除非檔案為symbolic,否則type同於c(type的類型見-type c,有d,p,f,l,s).

  1. action 在此只列出數個,其餘可由man find指令查到. -exec command ; 當找到符合條件的檔案,就執行該指令,指令結尾必須是";"

-fprint file

將完整檔名印入檔案file.

-ok command ;

用法同-exec,唯每一個指令執行前均會詢問使用者

-print

將符合條件的檔案資料由終端機顯示出來. 此項尚有許多參數可加,請以man查詢.

-ls

列出目前的檔案以標準輸出的 s -dils格式.

  1. 使用範例. Example1: [root@wind /root]# find ./ -size +500 -print ###找到目前目錄下,檔案大小大於250K Bytes的檔案,並將結果由終端機輸出 [root@]#wind /root]# find / -nouser -exec rm {} \; ###找出整個系統中所有"無主檔案"並刪除之。

Example2:

[root@wind /root]# find -user root -amin 3 ./.bashrc
./.kde/share/apps/kfm/magic
./.kde/share/apps/kfm/pidwind.DomrChu.nctu.edu.tw_0 ./.kde/share/config/kvtrc
./.kderc
./.Xauthority
./.bash_history
./HW1.TXT
./.HW1.TXT.swp

###列出所有屬於root且在3分鐘內曾被存取的檔案.

  1. 其他. 執行權限:ALL USER. 因find是即時尋找,所以會消耗頗大的系統資源,陳了硬碟一直讀取外,硬體 配備差的電腦其系統效能也會明顯下降,所以find不直常用,若要使用盡量 在無人使用server的情況下執行.另一點須要注意的是,若不是以root身份 執行find,而是以一般使用者身份執行,遇到沒有讀取權限的目錄,就會顯示 權限不足無法搜尋此目錄的訊息.