Linux/Unix下非常有用的find命令的用法
功能簡述:find(查找)主要沿著文件層次(目錄)結(jié)構(gòu)依次向下遍歷,匹配符合條件的文件,可以附帶執(zhí)行相應(yīng)的操作選項,默認的操作結(jié)果是打印出符合條件的文件與目錄(也可通過使用-print來指定,強調(diào)命令的結(jié)果是打印出來,不加此選項也可以)。
主要功能如下(所有測試均在當(dāng)前目錄(test)下開始匹配,搜索):
?:基本用法:列出給定目錄(base_path)下所有的文件和子目錄:find base_path -print
補充:
①:根據(jù)文件名和正則表達式進行搜索,使用選項 -name或-iname(忽略大小寫):
find base_path -name ‘xxx’ -print
find base_path -iname ’xxx‘ -print
②:否定參數(shù),可以用 !排除所指定到的模式。
此處將打印出除txt文本文件外的的所有文件。
③基于目錄深度的搜索linux命令,find命令指定遍歷完所有的子目錄。使用-maxdepth和-mindefth可以限制find命令遍歷的目錄深度,并且find命令默認不搜索符號鏈接,可以用-L選項改變這種行為。
例如-maxdepth的參數(shù)為1時,只匹配當(dāng)前目錄下。
-mindepth的參數(shù)代表了開始進行匹配的目錄到base_path的最短距離。
④:基于文件類型搜索:使用-type可以指定搜索的文件類型,linux/unix將所有的的一切都視為文件(文件類型有:普通文件f,目錄d,符號鏈接 l,字符設(shè)備c,塊設(shè)備b,套接字s,F(xiàn)IFO-p),使用 -type選項我們能夠?qū)ξ募愋瓦M行過濾。
此處就會只匹配出特定項下的所有普通文件,和目錄。
⑤:根據(jù)文件的時間戳進行搜索:Linux/Unix文件系統(tǒng)中的每一個文件都有三種時間戳,訪問時間(-atime),修改時間(-mtime),變化時間(-ctime),單位為天數(shù),用整數(shù)指定,數(shù)字前加上+,表示大于這個時間;加上-,表示小于這個天數(shù);不加表示剛好這個天數(shù)。
此處的文件是我在進行截圖之前才創(chuàng)建的,訪問,修改,變化時間均小于一天。
當(dāng)然相應(yīng)的用分鐘作為單位就可以用選項(-amin)(-mmin)(-cmin),如下我們測試修改時間
⑥:基于文件大小的搜索:find提供了指定文件大小的單位選項進而搜索符合大小文件的功能,這個搜索也常常會讓用戶感到非常舒服(b:塊, c:字節(jié), w:字, k:千字節(jié), M:兆字節(jié), G:吉字節(jié))。
在搜索之前我們先用ls(list)指令來查看下當(dāng)前目錄下的文件信息:
信息的第五列就是各文件目錄的大。ㄗ止(jié)),我們通過指定匹配條件來搜索:
經(jīng)過測試,在開始目錄下,文件類型為普通目錄,文件大小大于30個字節(jié)的文件就是zl.txt了
需要指出的是:選項出現(xiàn)的先后次序我們也應(yīng)該考慮到內(nèi)linux命令,因為它會影響到整條命令的執(zhí)行效率。
提示:本文需要掌握關(guān)于ls(list), chown(changeowner)等命令,以及關(guān)于Linux/Unix文件系統(tǒng)文件類型和文件權(quán)限等知識。
未完:見Linux下的find命令簡述(2)