2021-05-12 14:32:11
Linux下強大的查詢命令find 用法和常見用例
Linux系統下find是較為常用的指令,find命令在目錄結構中搜尋檔案,並執行指定的操作,掌握它的形式與用法對我們很有用處。
因為Linux下面一切皆檔案,經常需要搜尋某些檔案來編寫,所以對於Linux來說find是一條很重要的命令。Linux下面的find指令用於在目錄結構中搜尋檔案,並執行指定的操作。它提供了相當多的查詢條件,功能很強大。在不指定查詢目錄的情況下,find會在對整個系統進行遍歷。即使系統中含有網路檔案系統,find命令在該檔案系統中同樣有效。 在執行一個非常消耗資源的find命令時,很多人都傾向於把它放在後台執行,因為遍歷一個大的檔案系統可能會花費很長的時間。
命令功能
用於在檔案樹中查詢檔案,並做相應的處理,(有可能存取磁碟)。
1.find命令的格式
find pathname -options [-print -exec -ok ...]
2.命令引數
pathname: find命令所查詢的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄;
-print:find命令將匹配的檔案輸出到標準輸出;
-exec:find命令對匹配的檔案執行該引數所給出的shell命令,為查詢完成以後的操作。相應命令的形式舉例如
-exec ls -l {} ;
注意{ }和;之間的空格;
-ok:和-exec的作用相同,只不過以一種更為安全的模式來執行該引數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓使用者來確定是否執行,格式為:
-ok ls -l {} ;
3.命令選項
-options:
-name : 按照檔名查詢檔案;
-perm : 按照檔案許可權來查詢檔案;
-prune: 使用這一選項可以使find命令不在當前指定的目錄中查詢,如果同時使用-depth選項,那麼-prune將被find命忽略;
-user :按照檔案屬主來查詢檔案;
-group: 按照檔案所屬的組來查詢檔案;
-mtime -n +n: 按照檔案的更改時間來查詢檔案, - n表示檔案更改時間距現在n天以內,+ n表示檔案更改時間距現在n以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項相同;
-nogroup :查詢無有效所屬組的檔案,即該檔案所屬的組在/etc/groups中不存在;
-nouser :查詢無有效屬主的檔案,即該檔案的屬主在/etc/passwd中不存在;
find -nogroup
find -nouser
-newer file1:查詢更改時間與檔案file1更改時間最近的檔案;
-type :查詢某一型別的檔案,諸如:
b - 塊裝置檔案; d - 目錄; c - 字元裝置檔案; p - 管道檔案; l - 符號連結檔案; f - 普通檔案;
-size n +[c]代表以位元組計即查詢位元組為n的檔案,+n(表示大於n位元組的檔案),-n(表示小於n位元組的檔案);
-depth:在查詢檔案時,首先查詢當前目錄中的檔案,然後再在其子目錄中查詢;
-fstype:查詢位於某一型別檔案系統中的檔案,這些檔案系統型別通常可以在組態檔/etc/fstab中找到該組態檔中包含了本系統中有關檔案系統的資訊;
-mount:在查詢檔案時不跨越檔案系統mount點;
-follow:如果find命令遇到符號連結檔案,就跟蹤至連結所指向的檔案;
-cpio:對匹配的檔案使用cpio命令,將這些檔案備份到磁帶裝置中。
4.命令功能
用於在檔案樹種查詢檔案,並作出相應的處理(可能存取磁碟)。
5.總結
由以上可知 Linux下find命令提供了相當多的查詢條件,選項很多,功能很強大,即使系統中含有網路檔案系統(NFS),find命令在該檔案系統中同樣有效,只你具有相應的許可權。所以在執行一個非常消耗資源的find命令時,很多人都傾向於把它放在後台執行,因為遍歷一個大的檔案系統可能會花費很長的時間(這裡是指30G位元組以上的檔案系統)。
(以上舉例命令引數pathname基本都沒有明確給出,預設為當前路徑)
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-07/153184.htm
相關文章