Linux檔案查詢find命令

2021-09-26 14:04:49 字數 2857 閱讀 6780

作用:實時查詢工具,通過遍歷指定路徑完成問件查詢,遞迴地在層次目錄中處理檔案

find搜尋目錄樹上的每乙個檔名,它從左至右運算給定的表示式,按照優先規則進行匹配,直到得出結果(左邊運算在』與』操作中得出假,在』或』操作中得出真),然後 find移向下乙個檔名。

第乙個以 '- ', 『(』 , 『)』 , 『,』 或 『!』 這些字元起始的引數是表示式的開始;在它之前的任何引數是要搜尋的路徑,在它之後的任何引數都是表示式的餘下部分。如果沒有路徑引數,預設用當前目錄。如果沒有表示式,預設表示式 用 『-print』

當所有檔案都成功處理時 find 退出並返回狀態值0。如果發生錯誤則返回乙個大於0的值。

特點:精確查詢,實時查詢

可能只搜尋使用者具備讀取和執行許可權的目錄

查詢速度略慢

目錄:/,/etc,/var,/home之類都是

選項: 搜尋目錄層級

-maxdepth level :最大搜尋目錄深度

-mindepth level :最小搜尋目錄深度

-name filename :根據檔名匹配,支援萬用字元

例:find /etc -name pa*wd

-iname :忽略大小寫

-inum :根據inode節點號查詢

-samefile name :相同inode號的檔案

-links # :連線數為#的檔案

-regex "pattern" :以模式匹配整個檔案路徑,而非檔名稱

例:find /data -regex ".*\.sh$"

根據檔案屬主和屬組查詢;

-user username:查詢屬主為指定使用者的檔案

-group groupname:查詢屬組為指定組的檔案

-uid useruid:查詢屬主為指定uid的檔案

-gid groupgid:查詢屬組為指定gid的檔案

-nouser:查詢沒有屬主的檔案

-nogroup:查詢沒有屬組的檔案

根據檔案型別查詢:

-type:

b 特殊塊檔案(緩衝的)

c 特殊字元檔案(不緩衝)

d 目錄

p 命名管道 (fifo)

f 普通檔案

l 符號鏈結

s 套接字

空檔案或目錄

-empty

-type d -empty

根據檔案大小:

-size:常用單位(k m g c(byte))

+#m:表示大於#m的檔案,+5m

-#m:表示小於於#m的檔案,-5m

根據時間查詢:

以天為單位:

-atime:訪問時間

+,-:+10,超過十天訪問過的檔案,-10十天內訪問過的檔案

-mtime:修改時間,檔案內容最後一次修改的時間,檔案內容修改

-ctime:改變時間,檔案最後乙個改變的時間,屬性及檔名改變

以分鐘為單位:

-amin:訪問時間

-mmin:修改時間

-cmin:改變時間

根據檔案許可權查詢:

-perm:

mode:精確查詢

/mode:任何一類(u,g,o)物件的許可權只要匹配一位就滿足條件。或的關係。早期用+號表示

-mode:每一類物件都必須擁有指定許可權才滿足條件

0:表示不關注

例:find -perm 755 file,精確匹配許可權755的檔案

find -perm /222 file,屬主,屬組,其他人,其中乙個有寫許可權就匹配

find -perm -222 file,屬主,屬組,其他人,必須每個都有寫許可權就匹配

find -perm -002 file ,只有其他人有寫許可權時才匹配

動作: -print:預設的處理動作,將匹配到的顯示到螢幕

-ls:類似於ls -l檢視檔案

-delete:匹配到的內容刪除(危險,不要用)

-fls file:查詢到的檔案以長格式資訊儲存到指定的檔案中

-ok command {} \; :對查詢到的檔案,執行由command位指定的命令,缺點是對每個匹配的檔案執行命令前都需要確認

例:find /data -name "*.sh" -ok mv {} /tmp \;

{}:引用前面find匹配到的檔案,引用查詢到的檔名稱自身,例如匹配的是ping.sh,name{}內就位

\;:語法格式,必須以\;結尾

-exec command {} \; :對查詢到的檔案,執行由command位指定的命令,和ok不同的是不需要乙個乙個確認

例:find /data -name "*.sh" -ok mv {}.bak /tmp \;

{}.bak:移動到/tmp目錄下改名為以.bak為字尾的檔案

[root@centos7 ~]#find /var ! -user root ! -user lp ! -user gdm -type f   

/var/lib/colord/storage.db

/var/lib/nfs/state

/var/lib/unbound/root.key

/var/lib/setroubleshoot/setroubleshoot_database.xml

/var/lib/setroubleshoot/email_alert_recipients

/var/lib/postfix/master.lock

/var/spool/mail/rpc

/var/spool/mail/cheng

/var/spool/mail/ning

嘆號表示取反。

linux檔案查詢find命令

1.locate 與 find命令的區別 locate命令用於查詢檔案,它比find命令的搜尋速度快,它需要乙個資料庫,這個資料庫由每天的例行工作 crontab 程式來建立。當我們建立好這個資料庫後,就可以方便地來搜尋所需檔案了。即先執行 updatedb 無論在那個目錄中均可,可以放在cront...

linux檔案查詢 find命令

1 find命令的格式 find pathname options print exec ok 2 find命令的引數 pathname find命令所查詢的目錄路徑。例如用 來表示當前目錄,用 來表示系統根目錄。print find命令將匹配的檔案輸出到標準輸出。exec find命令對匹配的檔案...

Linux檔案查詢命令find

關於find命令 由於find具有強大的功能,所以它的選項也很多,其中大部分選項都值得我們花時間來了解一下。即使系統中含有網路檔案系統 nfs find命令在該檔案系統中同樣有效,只你具有相應的許可權。在執行乙個非常消耗資源的find命令時,很多人都傾向於把它放在後台執行,因為遍歷乙個大的檔案系統可...