你知道Linux系統中find命令的使用方法嗎?
今天小編帶給大家的文章是關于Linux系統中find命令的使用方法。熟悉Linux的小伙伴可能會對這個命令有所了解,但小編相信很多小伙伴對它沒有深入的了解,下面小編就來和大家談一談關于Linux系統中的find命令的使用方法。
find命令特點:文件查找,實時查找,速度略慢,精確匹配
使用格式:# find [options] [查找路徑] [查找條件] [處理動作]
查找路徑:默認為當前目錄
查找條件:默認為查找指定路徑下的所有文件
處理動作:默認為顯示
· 查找/tmp目錄下文件名為passwd的文件:# find /tmp -name"passwd"
· 查找/tmp目錄下文件名以passwd開頭的文件,passwd不區分大小寫:# find /tmp -iname "passwd*"
· 查找/tmp目錄下屬主為linuxmi的文件:# find /tmp -user linuxmi
· 查找/tmp目錄下屬組為linuxmi的文件:# find /tmp -grouplinuxmi
· 查找/tmp目錄下UID為502的文件:# find /tmp -uid 502
· 查找/tmp目錄下GID為502的文件:# find /tmp -gid 502
一個普通用戶例如linuxmi創建了/tmp/linuxmi.txt,該文件屬主和屬組都是linuxmi,但當keyso用戶被刪除之后,/tmp/linuxmi.txt文件的屬主和屬組會發生變化,此種情況無法再根據屬主為linuxmi這個被刪除用戶查找到/tmp/linuxmi.txt文件
· 查找/tmp目錄下沒有屬主的文件:# find /tmp -nouser
· 查找/tmp目錄下沒有屬組的文件:# find /tmp -nogroup
· 查找/tmp目錄下的目錄:# find /tmp -type d
-type文件類型包括:f(普通文件)、d(目錄)、b(塊設備)、c(字符設備)、l(符號鏈接文件)、p(命名管道)和s(套接字)等
· 查找/tmp目錄下大于100M的文件:# find /tmp -size +100M
-size:根據文件大小查找,-size [+ | -]#[k | M | G],+(大于),-(小于),沒有+和-,就是精確匹配
#實際的取值范圍:(#-1)<x<=#
· 查找/tmp目錄下一天之內被訪問過的文件:# find /tmp -atime -1
格式:-[a | m | c][time | min] [+ | -]#
根據time時間戳查找(以天為單位):
-atime:訪問時間,就是一個文件最后一次被訪問的時間
-mtime:修改時間,就是文件的內容最后被修改的時間
-ctime:改變時間,就是文件或者目錄的屬性(屬主、屬組、權限等等)被改變的時間
根據min時間戳查找(以分鐘為單位):
-amin:意義同-atime
-mmin:意義同-mtime
-cmin:意義同-ctime
+#:表示(#+1)天之外被訪問過
-#:表示#天之內被訪問過
#:表示在#<=x<(#+1)天的時間段內被訪問過
· 查找/tmp目錄下權限為644的文件:# find /tmp -perm 644
根據權限查找,格式:-perm [+ | -]MODE
+MODE:任何一類用戶的任何一位權限匹配,常用于查找某類用戶的某特定權限是否存在
-MODE:每類用戶的指定要檢查的權限位都要匹配
MODE:精確匹配所給的權限
示例: //6=4+2=r+w
· 查找/tmp目錄下權限為666的文件(精確匹配):# find /tmp -perm 666
· 查找/tmp目錄下其他用戶有讀寫權限的文件:# find /tmp -perm -006
· 查找/tmp目錄下其他用戶有讀或者寫權限的文件:# find /tmp -perm +006
· 查找/tmp目錄下至少有一類用戶有寫權限的文件:# find /tmp -perm +222
· 查找/tmp目錄下所有用戶都有寫權限的文件:# find /tmp -perm -222
· 查找/tmp目錄下所有用戶都沒有寫權限的文件:# find /tmp -not -perm +222
//“所有用戶都沒有”和“只要有一類用戶有”意思相反
//只確定不能有寫權限,并不能確定有沒有讀和執行權限
· 查找/tmp目錄下至少有一類用戶沒有寫權限的文件:# find /tmp -not -perm -222
//“至少有一類用戶沒有”和“所有用戶都有”意思相反
· 查找/tmp目錄下屬組或者其他用戶有讀寫權限的文件:# find /tmp -perm -060 -o -perm -006
· 查找/tmp目錄下屬組和其他用戶都有讀寫權限的文件:# find /tmp -perm -066
· 查找/tmp目錄下屬組有讀或者寫權限,或者其他用戶有讀或者寫權限的文件(4選1):
# find /tmp -perm +066
· 查找/tmp目錄下的普通文件,并刪除:# find /tmp -type f -exec rm -rf {} ;
· 查找/tmp目錄下大于10M的文件,并以長格式顯示文件信息:# find /tmp -size +10M -ls
· 查找/tmp目錄下以.doc結尾的文件,并重命名為.docx:# find /tmp -iname "*.doc" -exec mv {} {}x ;
處理動作:
-ls:以長格式顯示文件信息
-exec COMMAND {} ; --> 對查找到的文件執行指定的命令,{}為占位符,指代find查找到的文件
-ok COMMAND {} ; --> 與-exec COMMAND {} ;類似,交互式的-exec
|xargs COMMAND:對查找到的文件執行指定的命令,功能與-exec COMMAND {} ;類似
備注:-exec與xargs的區別
-exec:find將查找到的所有文件一次性全部傳遞給-exec所指定的命令,容易出現溢出錯誤。-exec為處理每一個匹配到的文件而發起一個相應的進程,會導致進程過多,系統性能下降
xargs:對find傳遞給xargs所指定的命令的文件,每次只獲取一部分而不是全部,不會出現溢出錯誤。另外xargs只會發起一個進程,不會導致系統性能下降
· 查找/tmp目錄下沒有屬主或屬組,且最近1個月內曾被訪問過的文件:
# find /tmp ( -nouser -o -nogroup ) -a -atime -30 //括號內側的兩端都需要加空格
組合條件:
-a:與,同時滿足,如果組合條件中只有-a,可以省略 --> # find /tmp -user?hadoop?[-a] -name "*.txt"
-o:或,只需滿足其一即可,優先級比-a低,如果需要先執行-o條件,需要加(),()需要轉義
-not | !:非,取反
非A且非B <==> 非(A或B) -not A -a -not B <==> -not ( A -o B )
非A或非B <==> 非(A且B) -not A -o -not B <==> -not ( A -a B )
本文永久更新鏈接地址:https://www.linuxidc.com/Linux/2018-05/152609.htm
以上就是小編今天為大家分享的關于Linux 系統中find命令的使用方法,希望本篇文章能夠對你有所幫助,想了解更多關于Linux相關的信息記得關注馬哥Linux官網哦,這里不僅有豐富的Linux資訊還有專業的Linux培訓班,快來吧,小編在這里等你哦~
聲明:文章轉載于網絡,版權歸原作者所有!