find、locate、Gnome文件查找工具

查找命令:

? ? ? ? locate:非實時查找
? ? ? ? find:實時查找
? ? ? ? Gnome:圖形化搜索工具

locate:

描述:
查詢系統上預建的文件索引數據庫/var/lib/mlocate/mlocate.db,一天更新一次
更新數據庫:
updatedb
特點:
依賴于事先構建的索引。索引的構建是在系統較為空閑時自動進行(周期性任務),管理員手動也可更新數據庫。索引構建過程需要遍歷整個根文件系統,極消耗資源
查找速度快
模糊查找
非實時查找
搜索的是文件的全路徑,不僅僅是文件名
可能只搜索用戶具備讀取和執行權限的目錄
格式:
locate KEYWORD
選項:
-i:忽略大小寫
-n #:只列舉前#個匹配項目
-r:使用正則表達式
實例:
例:搜索名稱或路徑中帶有”conf”的文件
# locate conf
例:使用Regex來搜索以”.conf”結尾的文件
# locate -r ‘\.conf$’

find:

解釋:
實時查找工具,通過遍歷指定路徑完成文件查找
工作特點:
查找速度略慢
精確查找
實時查找
可能只搜索用戶具備讀取和執行權限的目錄

格式:
find [OPTION]… [查找路徑] [查找條件] [處理動作]

查找路徑:
指定具體目標路徑;默認為當前目錄,并且遞歸搜索
查找條件:
描述:
指定的查找標準,可以文件名、大小、類型、權限等標準進行;默認為找出指定路徑下的所有文件

指定搜索層級:
-maxdepth level:最大搜索目錄深度,指定目錄為第一級
-mindepth level:最小搜索目錄深度

例:最大第三層,最小兩層(2-3層)
# find /etc -maxdepth 3 -mindepth 2 -name “network”
例:只在第二層尋找:
# find /etc -maxdepth 2 -mindepth 2 -name “network”

根據文件名和inode查找:
-name “文件名稱”:支持使用glob
通配符:*,?,[],[^]
例:# find -name “*.txt”
-iname “文件名稱”:不區分字母大小寫
-inum n:按inode號查找
例:# find / -inum 2 -ls
-samefile name:相同inode號的文件
-links n:鏈接數為n的文件s
-regex “PATTERN”:以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱
例:# find /root -regex “.*\.txt”
# find /root -regex “.*\.\(txt\|sh\)$”

根據屬主、屬組查找:
-user USERNAME:查找屬主為指定用戶的文件
例:尋找home下不是wang的并且不是.sh結尾的文件
# find /home ! \( -user wang -o -name “*.sh” \)
-group GRPNAME:查找屬組為指定組的文件
-uid UserID:查找屬主為指定的UID的文件
-gid GroupID:查找屬組為指定的GID的文件
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件

根據文件類型查找:
-type TYPE:
f:普通文件
d:目錄文件
l:符號鏈接文件
s:套接字文件
b:塊設備文件
c:字符設備文件
p:管道文件
組合條件:
與:-a
或:-o
非:-not,!
德·摩根定律:
(非A)或(非B)= 非(A且B)
(非A)且(非B)= 非(A或B)
實例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)

根據文件大小查找:
-size [+|-]#UNIT
常用單位:k,M,G,c(byte)
#UNIT:(#-1,#]
如:6k表示(5k,6k]
-#UNIT:[0,#-1]
如:-6k表示[0,5k]
+#UNIT:(#,∞)
如:+6k表示(6k,∞)

根據時間戳:
以”天”為單位:
-atime [+|-]#,
#:[#,#+1)
+#:[#+1,∞]
-#:[0,#)
-mtime
-ctime
以”分鐘”為單位:
-amin
-mmin
-cmin

根據權限查找:
-perm [/|-]MODE
MODE:精確權限匹配
/MODE:
任何一類(u,g,o)對象的權限中只要能一位匹配即可,或關系,+從centos7開始淘汰
-MODE:每一類對象都必須同時擁有指定權限,與關系0表示不關注
tip:
find -perm 755會匹配權限模式恰好是755的文件
任合一人有寫權限時,find -perm +222就會匹配
只有當每個人都有寫權限時,find -perm -222才會匹配
其他人other有寫權限時,find -perm -002才會匹配

根據文件大小來查找:
-size [+|-]#UNIT
常用單位:k,M,G,c(byte)
#UNIT:(#-1,#]
如:6k 表示(5k,6k]
-#UNIT:[0,#-1]
如:-6k表示[0,5k]
+#UNIT:(#,∞)
如:+6k表示(6k,∞)

根據時間戳:
以”天”為單位:
-atime [+|-]#
#:[#,#+1)
+#:[#+1,∞]
-#:[0,#)
-mtime
-ctime
以”分鐘”為單位:
-amin
-mmim
-cmin

根據權限查找:
-perm [/|-]MODE
MODE:精確權限匹配
/MODE:任何一類(u,g,o)對象的權限中只要能以為匹配即可,或關系,+從centos 7開始淘汰
-MODE:每一類對象都必須同時擁有指定權限,與關系0表示不關注
find -perm 755
會匹配權限模式恰哈是755的文件
只要當任意人都有寫權限時,find -perm +222就會匹配
只有當每個人都有寫權限時,find -perm -222才會匹配
只有當其他人other都有寫權限時,find -perm -002才會匹配

處理動作:
描述:
對符合條件的文件做操作,默認輸出至屏幕
選項:
-print:默認的處理動作,顯示至屏幕
-ls:類似”ls -l”
-delete:刪除查找到的文件
-fls file:查找到的所有文件的長格式信息保存至指定文件中
-ok COMMAND {} \;:對查找到的每個文件執行由COMMAND指定的命令,對于每個文件執行命令之前,都會交互式要求用戶確認
-exec COMMAND {} \;:對查找到的每個文件執行由COMMAND指定的命令
{}:用于引用查找到的文件名稱自身
find傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令

參數替換xargs:
描述:
由于很多命令不支持管道”|”傳遞參數,而日常工作中有這個必要,所以就有了xargs命令
xargs用于產生某個命令的參數,xargs可以讀入stdin的數據,并且以空格符或回車符將stdin的數據分割成為arguments
格式:
find | xargs COMMAND
tip:注意,文件名或其它意義的名詞內含有空格符的情況
有些命令不能接受過多的參數,命令執行可能會失敗,xargs可以解決

示例:
ls f* | xargs rm
find /sbin -perm +700 | ls -l //這個命令是錯誤的
find /sbin -perm +7000 | xargs ls -l
例:備份配置文件,添加.orig這個擴展名
# find -name “*.conf” -exec cp {} {}.orig \;
例:提示刪除存在時間超過3天以上的joe的臨時文件
# find /tmp -ctime +3 -user joe -ok rm {} \;
例:在主目錄中尋找可被其它用戶寫入的文件
# find ~ -perm -002 -exec chmod o-2 {} \;
例:# find /data -type f -perm 644 -name “*.sh” -exec chmod 755 {} \;
例:# find /home -type d -ls

實例:
例:# find -name snow.png
例:# find -iname snow.png
例:# find / -name “*.txt”
例:# find /var -name “*log”
例:# find -user joe -group joe
例:# find -user joe -not -group joe
例:# find -user joe -o -user jane
例:# find -not \( -user joe -o -user jane \)
例:# find / -user joe -o -uid 500

示例:
例:找出/tmp目錄下,屬主不是root,且文件名不以f開頭的文件
# find /tmp \( -not -user root -a -not -name ‘f*’ \) -ls
# find /tmp -not \( -user root -o -name ‘f*’ \) -ls
例:查找/etc下,除/etc/sane.d目錄的其它所有.conf后綴的文件
# find /etc -path ‘/etc/sane.d’ -a -prune-o -name “*.conf”
解釋:
-prune:排除
例:查找根下除了/app下所有的.sh結尾的文件
# find / -path ‘/app’ -a -prune -o -name “*.sh”

例:查找/etc下,除/etc/sane.d和/etc/fonts兩個目錄的其它所有.conf后綴的文件
# find /etc \( -path ‘/etc/sane.d’ -o -path ‘/etc/fonts’ \) -a -prune -o -name “*.conf”

例:查找根下除了/app和/usr以外的所有.sh后綴的文件
# find / \( -path ‘/app’ -o -path ‘/usr’ \) -a -prune -o -name “*.sh”

tip:注意查找排除的時候目錄后面不要加”/”,否則查找失敗

Gnome:
描述:
圖形化搜索工具,可搜索命令、內容、用戶/組、大小、修改時間

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/88974

(2)
Pkin°Pkin°
上一篇 2017-11-26 21:26
下一篇 2017-11-26

相關推薦

  • 馬哥教育首屆IT技術博客大賽–結果揭曉

    號外、號外??!馬哥教育首屆博客大賽已圓滿結束。感謝小伙伴們的積極參與! 噼里啪啦,小伙伴們掌聲響起來,啤酒烤鴨high起來~~咳咳,跑題了,小編好像忘了一件很重要的事: 馬幫博客大賽就是與眾不同,全銀河系也就僅此一家,為啥這么說呢,您看啊,咱就喜歡原創,鼓勵原創,酷愛原創,以原創博客作為技術交流的平臺供大家隨意圍觀和吐槽,您看看,除了馬哥這里,哪里還有這么自…

    Linux干貨 2016-06-22
  • N25期第三周作業

    1.列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可 who|awk ‘{print $1}’|sort -u 2.取出最后登錄到當前系統的用戶的相關信息 last -1 3.取出當前系統上被用戶當作其默認shell的最多的那個shell cat /etc/passwd|awk -F: ‘{print $NF}’|sort…

    Linux干貨 2016-12-12
  • Linux前端包管理器—yum

    Yum(Yellow dog Updater, Modified)由Duke University團隊,修改Yellow Dog Linux的Yellow Dog Updater開發而成,是一個基于RPM包管理的字符前端軟件包管理器。能夠從指定的服務器自動下載RPM包并且安裝,可以處理依賴性關系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。 介…

    Linux干貨 2016-08-29
  • vim文本編輯器簡單用法

    vim最基礎的用法

    2017-09-09
  • 在馬哥學習linux第一天的感受

         來馬哥教育好幾天了,昨天算是正式開始,在昨天早上,舉行了開班典禮,各位老師助教為我們介紹了在馬哥教育進行培訓的相關注意事項,下午進行了兩場測試,首先有一個摸底測試,不得不說我真的是太菜了,除了一些比較簡單的題目我還有些把握,相當一部分我都是似曾相識,但是也不是很確定,還有很大一部分我根本聽都沒聽說過,看到別人都寫的滿滿…

    Linux干貨 2017-07-11
  • 權限(用戶、特殊、ACL)

    root權限(id=0) root無論在什么情況下都有rw權限,但是是否擁有x權限,要分情況: 第一,文件所有者和所屬組都無x權限,root也無x權限; 第二,文件所有者和所屬組二者任何一個有x權限,root就有x權限。 用戶得到的權限 匹配順序:文件所有者——文件所屬組——其他人(從左到右) 用戶訪問文件,一旦按次序匹配成功,其獲得的權限就是匹配選項所對應…

    Linux干貨 2017-05-30
欧美性久久久久