find:命令
實時查找工具,通過遍歷指定路徑完成文件查找
工作特點:查找速度慢,精確查找,實時查找,可能只搜索用戶具備讀取和執行的目錄
用法:
?find【OPTION]…[查找路徑】【查找條件】【處理動作】
查找路徑:指定具體目標路徑;默認為當前目錄
查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行;
默認為找出指定路徑下的所有文件
處理動作:對符合條件的文件做操作,默認輸出至屏幕
(1)查找條件
指定搜索索層級:
-maxdepth level 最大搜索目錄深度,指定目錄為第1級
-mindepth level 最小搜索目錄深度
例搜索第二層
fing /ect/profile.d/ -maxdepth 2 -mindepth 2
【2】根據文件名和inode查找:
-name “文件名稱”:支持使用glob *, ?, [], [^]
-iname “文件名稱”:不區分字母大小寫
-inum n 按inode號查找
-samefile name 相同inode號的文件
-links n 鏈接數為n的文件
-regex “PATTERN”:以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱
【3】根據屬主、屬組查找:
-user USERNAME:查找屬主為指定用戶(UID)的文件
-group GRPNAME: 查找屬組為指定組(GID)的文件
-uid UserID:查找屬主為指定的UID號的文件
-gid GroupID:查找屬組為指定的GID號的文件
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件
【3】根據文件類型查找:
-type TYPE:
f: 普通文件 ? ?d: 目錄文件 ?l: 符號鏈接文件 ?s:套接字文件 ?b: 塊設備文件 ?c: 字符設備文件 ?p: 管道文件
空文件或目錄 -empty
示例: ?find /app -type d -empty
組合條件: 與:-a ? 或:-o ? ? ? ? 非:-not, !
德·摩根定律:
(非 A) 或 (非 B) = 非(A 且 B)
(非 A) 且 (非 B) = 非(A 或 B)
示例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
根據文件大小來查找:
-size [ + | – ] NUM 單位 【k,M,G,c(byte字節)】
-size 6k 表示 在 5k 到 6k 之間的文件大小 【大于5k小于等于6k】
-size -6k 表示 0k到 5k 之間的文件 包括 0 和 5
-size +6k 表示 大于6k的所有文件
根據時間戳來查找:
-atimee [+|-]#以天為單位。
-atime 1 ? ?大于等于一天小于兩天
-atime -1 ? 小于一天到零天
-atime +1 ?大于等于一天的全部
-mtime ? ? ? ? ? ? ? ? -ctime
以“分鐘”為單位: ?-amin ? ? ? ? -mmin ? ? ? ?-cmin
根據權限查找:
-perm ?[/|-] MODE
/644 :任何一類(u,g,o)對象的權限中只要能一位匹配即可,或關系
-440:每一類對象都必須同時擁有指定權限,與關系
0 表示不關注
處理動作:
-print:默認的處理動作,顯示至屏幕
-ls:類似于對查找到的文件執行“ls -l”命令
-delete:刪除查找到的文件
-fls file:查找到的所有文件的長格式信息保存至指定文件中
-ok COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令,對于
每個文件執行命令之前,都會交互式要求用戶確認
-exec COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令
{}: 用于引用查找到的文件名稱自身
find傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性
傳遞給后面的命令
參數替換xargs
由于很多命令不支持管道|來傳遞參數時,我們可以用xargs來傳遞處理上一個命令的參數。
基本上就是,xargs將前面命令產生的參數,一個一個傳給后面的參數。有時候有些命令接受不了過多的參數,命令執行可能會失敗,xargs可以解決。
find和xargs格式:find | xargs COMMAND
練習:
1、查找/var目錄下屬主為root,且屬組為mail的所有文件
2、查找/var目錄下不屬于root、lp、gdm的所有文件
3、查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是postfix的文件
4.、查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件
5、查找/etc目錄下大于1M且類型為普通文件的所有文件?
6.、查找/etc目錄下所有用戶都沒有寫權限的文件
7.、查找/etc目錄下至少有一類用戶沒有執行權限的文件?
8.、查找/etc/init.d目錄下,所有用戶都有執行權限,且其它用戶有寫權限的文件
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95832