find:用於在目錄層次結構中搜索文件。
簡介:find [options] [path...] [expression]
expression:[options] [tests] [actions]
tests:測試條件
-name pattern:根據文件名查找文件。
-iname pattern:與-name類似,不區分大小寫。
-regex pattern:通過正則表達式匹配文件的完整路徑名稱。
-user uname:查找屬主爲uname的文件,可使用uid。
-group gname:查找屬組爲gname的文件,可使用gid。
-nouser:查找沒有屬主的文件。
-nogroup:查找沒有屬組的文件。
-type c:根據文件的類型進行查找。
b:塊設備
c:字符設備
d:目錄
p:管道
f:常規文件
l:符號鏈接
s:套接字
-size [+|-]n:指定查找文件的大小,常用單位:k,M,G。
-atime [+|-]n:以天爲單位,指定查找文件的訪問時間。
-mtime [+|-]n:以天爲單位,指定查找文件的修改時間。
-ctime [+|-]n:以天爲單位,指定查找文件的改變時間。
-amin [+|-]n:以分鐘爲單位,指定查找文件的訪問時間。
-mmin [+|-]n:以分鐘爲單位,指定查找文件的修改時間。
-cmin [+|-]n:以分鐘爲單位,指定查找文件的改變時間。
-perm [/|-]mode:查找指定權限的文件。
mode:精確權限匹配。
/mode:任何一類用戶(u,g,o)的權限中的任何一位(r,w,x)符合條件即滿足,9位權限之間存在“或”關係。
-mode:每一類用戶(u,g,o)的權限中的每一位(r,w,x)同時符合條件即滿足,9位權限之間存在“與”關係。
actions:處理動作
-print:將查找到的文件名輸出至標準輸出,爲默認動作。
-ls:在標準輸出上以ls -dils格式列出當前文件。
-delete:刪除文件。
-fls file:類似-ls,只是將內容輸出到指定文件中。
-exec command {} \;:將查找到的文件做爲參數,執行command處的命令。
-ok command {} \;:和-exec類似,執行命令前提示用戶。
operators:運算符
! expr:非運算,如果expr爲真,則爲假。
expr1 -a expr2:與運算,expr1和expr2都爲真,則爲真,默認運算方式。
expr1 -o expr2:或運算,expr1或expr2爲真,則爲真。
示例
find /tmp -name core -type f -print | xargs /bin/rm -f
查找/tmp目錄下文件名爲core的普通文件並刪除。
find . -type f -exec file {} \;
查找當前目錄下的所有普通文件並對找到的每個文件執行file命令。
find $HOME -mtime 0
查找用戶家目錄下1天之內修改過的文件。
find . -perm 664
查找當前目錄下權限爲664的所有文件。
find . -perm -664
查找當前目錄下權限大於等於664的所有文件。
find . -perm /222
查找當前目錄下屬主、屬組和其他人中任一用戶有寫入權限的文件。
find . -perm -444 -perm /222 ! -perm /111
查找當前目錄下所有用戶都有讀權限,屬主、屬組和其他人中任一用戶有寫權限,所有人都沒有執行權限的文件。