Linux下的find命令詳解
在linux下有兩種查找符合條件文件的命令,是locate和find。我們來說說find這個命令。
find:
- 實時查找工具,遍歷查找指定路徑下的所有的文件來找到符合條件的文件。
- 特點:查找文件比locate速度略慢,查找文件很精確,并且是實時進行查找的。
- 使用方法:find [OPTIONS] [查找起始路徑] [查找條件] [處理動作]
- 查找時的起始路徑:默認是當前目錄,或者是指定具體要搜索目標的起始路徑。
- 查找條件:可以根據文件名、文件大小、文件類型、從屬關系、權限等標準來進行查找。默認為查找指定路徑下的所有文件。
- 處理動作:對找到符合條件的文件做之后的處理操作,比如刪除、修改等,默認是輸出到標準輸出。
按照文件名來查找:
- -name “pattern” — 按照字符串來查找
- -iname “pattern” — 不區分文件名的大小寫來查找,支持glob風格的通配符(* ? [ ] [^})
- -regex pattern — 按照正則表達式模式來查找,查找的是整個文件路徑,而不是文件名。
按照文件從屬關系查找:
- -user USERNAME:查找屬主指定用戶的所有文件;
- -group GRPNAME:查找屬組指定組的所有文件;
- -uid UID:查找屬主指定的UID的所有文件;
- -gid GID:查找屬組指定的GID的所有文件;
- -nouser:查找沒有屬主的文件;
- -nogroup:查找沒有屬組的文件;
按照文件類型查找:-type TYPE
- f: 普通文件
- d: 目錄文件
- l:符號鏈接文件
- b:塊設備 文件
- p:管道文件
- s:套接字文件
組合語句時用的邏輯選項:
- 與:-a, 默認為這個組合邏輯;
- 或:-o
- 非:-not, !
按照文件大小查找:
- 格式:-size [+|-]#UNIT
- 常用單位:k, M, G
- #UNIT:(#-1,#]
- -#UNIT:[0,#-1]
- +#:(oo,#-1]
按照時間戳查找:
以“天”為單位:
- -atime
- -mtime
- -ctime
以“分鐘”為單位:
- -amin
- -mmin
- -cmin
按照權限查找:
- 格式:-perm [/|-]mode
- 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傳遞查找到的文件路徑到后面的命令時,是查找出所有符合的文件路徑并一次給后面;
有些命令不能接受過長的參數,用另外一種方式避免此問題: find | xargs COMMAND
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/92735