find:
? ? ?實時查找工具,通過遍歷指定起始路徑下的文件系統層級結構完成文件查找:
工作特性:
? ? 查找速度略慢
? ? 精確查找
? ? 實時查找
用法:
?find [option] [查找起始路徑][查找條件][處理動作]
查找起始路徑:指定具體搜索目標起始路徑;默認為當前目錄
查找條件:指定的查找標準,可以根據文件名、大小、類型、從屬關系、權限等標準進行:默認為找出指定路徑下的所有文件:
處理動作:對符合查找條件的文件作出的操作,例如刪除等操作;默認為輸出至標準輸出;
查找條件:
? 表達式:選項和測試
測試:
? 根據文件名查找:
?-name "pattern"
?-name "pattern"
? ? ? ? 支持glob風格的通配符:
? ? ? ? ?*,?,[],[^]
-regex pattern:基于正則表達式模式查找文件,匹配是整個路徑,而非其名;
根據文件從屬關系查找:
-user USERNAME:查找屬于屬主指定用戶的所有文件
-group GROUPNAME:查找數組指定組的所有文件
-uid UID:查找屬主指定的UID的所有文件
-gid GID:查找數組指定的GID的所有的文件
-nouser:查找沒有屬主的文件
-nogroup:查找沒有數組的文件
根據文件的類型查找:
-type TYPE
?f:普通文件
?d:目錄文件
?l:符號鏈接問
?b:塊設備文件
?c:字符設備文件
?p:管道文件
?s:套接字文件
組合測試:
? ?與:-a,默認邏輯組合
? ?或:-o,
? ?非:-not,!
根據文件大小查找
-size [+|-]+Unit
? 常用單位: k,M,G
? #Unit:(#-1,]
比如當前目錄下找出大小等于175k的文件,find -size 175k ls,那么小于或者等于175k都滿足,小不能等于174,大于不能超過175
? -#Unit:[0,-1
? +#Unit:(#,)
根據時間戳查找
以"天"為單位
? -atime[+|-]#
? ? #:[#,#-1],過去的天數,換句話說就是N天前
? ? -#:(#,0],N天內訪問時間
? ? +#:(#,---):
accesstime(atime)
當使用這個文件的時候就會更新這個時間
? -mtime
modification time(mtime):當修改文件的內容數據的時候,就會更新這個時間,而更改權限或者屬性,mtime不會改變,這就是和ctime的區別
? -ctime
status time(ctime)
當修改文件的權限或者屬性的時候,就會更新這個時間,ctime并不是create time,給我的感覺更像是change time,但這么說也不完全對,因為只有當更新文件的屬性或者權限的時候才會更新這個時間,更改內容的話是不會更新這個時間的
總結一下:
-mtime ? -n +n ? ? ? ? ? ? ?#按文件更改時間來查找文件,-n指n天以內,+n指n天以前
-atime ? -n +n ? ? ? ? ? ? ?#按文件訪問時間來查GIN: 0px">
-ctime ? -n +n ? ? ? ? ? ? ?#按文件創建時間來查找文件,-n指n天以內,+n指n天以前
以"分鐘"為單位
? -amin
? -mmin
? -cmin
根據權限查找
mode:精確匹配
/mode:任何一類用戶(u,g,o)的權限中任何一位(r,w,x)符合條件即滿足
9位權限之間存在的"或"關系
-mode:每一類用戶(u,g,o)的權限中的每一位(r,w,x)同時符合條件即滿足
9位權限之間存在的"與"關系
處理動作:
? -print:輸出至標準輸出,默認的動作
? -ls:類似于對查找的文件執行"ls -l"命令,輸出文件的詳細信息
? -delete:刪除查找到的文件
? -fls /path/to/somefile:把查找到的所有文件的長格式信息保存到指定文件中;
? -ok COMMAND {} \;:對查找的每個文件執行COMMAND表示的命令,每次操作要要用戶確認
? -exec COMMAND {} \;:對查找的每個文件執行COMMAND表示的命令,無需用戶確認,直接完成
例如:
find ./ -perm /002 -exec mv {} {}.danger \;
{}是占位符,這里代表找到的文件
注意:find傳遞查詢到的文件路徑至后面的命令時,是先查找到所有符合條件的文件路徑,并一次性傳遞給后面命令:
但是有些命令不能接受過長的參數,此時命令執行會失敗;另外一種方式可規避此問題:
find | xargs COMMAND
轉載于:https://blog.51cto.com/ucode/1896883