Linux檔案查詢命令及find詳解
一、linux的檔案查詢工具
1、locate工具
2、find工具
二、locate命令
1、特點:
(1)依賴資料庫(可以用update更新資料庫,但費時長,現實企業環境最好不用)
(2)非實時查詢,結果非精確
(3)查詢速度快
(4)模糊查詢
三、find命令
1、特點:
(1)實時查詢,查詢速度慢
(2)精確匹配
2、find命令格式:
# find [options] [查詢路徑] [查詢條件] [處理動作]
(1)預設情況:
①查詢路徑:預設當前目錄
②查詢條件:預設為查詢指定路徑下的所有檔案
③處理動作:預設為顯示
(2)查詢條件選項:
①-name ‘FILENAME’
②-iname ‘FILENAME’:檔案匹配時不區分大小寫,同上支援globbing。
③-regex PATTERN:基於正則表示式進行檔案查詢(檔名匹配)
④-user USERNAME:根據檔案屬主查詢
⑤-group GROUPNAME:根據檔案屬組查詢
⑥-uid UID:根據檔案的UID查詢
⑦-gid GID:根據檔案的GID查詢
上述兩個選項的意義在於:如果使用者或組被刪除後,檔案中包含的屬主、屬組的查詢會被轉換成對應的uid和gid查詢
⑧-nouser
⑨-nogroup :查詢沒有屬組的檔案
⑩-type {f,d,c,b,l,p,s}:查詢特定的檔案型別
f:普通檔案
d:目錄
c:字元裝置
b:塊裝置
l:符號連結檔案
p:命名管道裝置
s:套接字裝置
⑪-size [+|-] SIZE(大小)unit(單位):按檔案大小查詢
+表示大於,-表示小於
常用單位:
[+|-]#k
[+|-]#M
[+|-]#G
⑫組合條件:
-a :與(and)
-o :或(or)
-not:非(not)
優先順序:-not>-a>-o
非A或非B==非(A且B)
非A並非B==非(A或B)
⑬按時間戳查詢:-{m,c,a}{time,min} [+|-]#
以天為單位:
-mtime #:表示過去第(#+1)天以後第#天以前的時間段被修改過的檔案
-ctime #:表示過去第(#+1)天以後第#天以前的時間段被改變過的檔案
-atime #:表示過去第(#+1)天以後第#天以前的時間段被訪問過的檔案
以分鐘為單位:
-mmin #:表示過去第(#+1)分鐘以後第#分鐘以前的時間段被修改過的檔案
-cmin #:表示過去第(#+1)分鐘以後第#分鐘以前的時間段被改變過的檔案
-amin #:表示過去第(#+1)分鐘以後第#分鐘以前的時間段被訪問過的檔案
上述均支援[+|-]#
+表示:過去第(#+1)天(分鐘)以前被訪問過
-表示:現在到過去第#天(分鐘)以內被訪問過
⑭按檔案許可權位查詢:-perm [+|-]MODE(精確匹配,MODE為3位八進位制數)
+MODE:9位許可權位中任意一位匹配即滿足條件(任何一類使用者任何一維許可權匹配即可)–>常用於查詢某類使用者的某特定許可權是否存在
-MODE:檔案許可權能完全包含MODE時才滿足(每類使用者的任何一位許可權為匹配才滿足)–>常用於查詢某類使用者包含哪些許可權
沒有符號:精確匹配許可權位置
(3)處理動作:(預設為-print)
①-print:列印在標準輸出上
②-ls:以長格式輸出各檔案資訊
③-exec COMMAND {} \;:對查詢的檔案執行指定的命令
④-ok COMMAND:互動式的-exec
⑤find | xargs COMMAND:與exec功能相似,但需要通過管道將標準輸入轉換為命令。
例:find /tm p/test/ -perm -666 | xargs ls -l {}
find /etc/ -size +1M | xargs echo {} >> /tmp/etc.largefiles
{}是檔案佔位符代替查詢到的檔案的名稱
-exec的好處:
例:find /tmp/test -perm -666 -exec {} {}x \;
可用於對搜尋到的檔名進行二次或以上的引用,而xargs只能引用一次。
xargs的好處
可以對搜尋到的檔名逐個處理