檔案查詢命令 bug--maker 發表於2018-09-18
locate
:不是實時的檔案查詢,根據全系統檔案資料庫進行查詢的,模糊查詢,但是速度較快 update
命令用來生成檔案資料庫;locate reads one or more databases prepared by updatedb(8) and writes file names matching atleast one of the PATTERNs to standard output, one per line
最常使用的命令是find
,實時查詢,精確查詢,通過遍歷目錄中的所有檔案的查詢,但是速度慢;
格式:find 查詢路徑 查詢標準 查詢以後的處理操作
,預設為當前目錄進行查詢;
查詢標準:
-name filename
:用來做精確查詢;支援檔名通配:
-iname filename
:表明在匹配不區分大小寫;
-regex PATTERN
:基於正規表示式實現檔名匹配;
-user USERNAME
:進行使用者查詢;
-group GROUPNAME
:按照組進行查詢;
-uid uidname
:按照 uid
進行查詢,因為一個使用者刪除之後,不在使用者家目錄裡面的檔案仍然是存在的,並且屬主為之前使用者的uid
,對於這些檔案的管理需要使用uid
進行查詢;
-gid gidname
:按照 gid
進行查詢,對於組的概念和上面是一樣的;
-nouser
:查詢沒有使用者的檔案;
-nogroup
:查詢沒有屬組的檔案;注意:使用者或者組再被使用-r
刪除後,使用者或者租
的id
號仍然存在,這個使用者的檔案任然是存在的;
-type
通過型別進行查詢:
f
:普通檔案;
d
:目錄檔案;
c
:字元裝置;
b
:塊裝置;
l
:連結檔案;
p
:管道裝置;
s
:套接字檔案;
-size
:#單位 k|M|G
:同樣可以使用+-
號表示大於或者小於該大小,在一定範圍內的都會顯示;
組合條件進行查詢:
-a
:表示需要同時滿足;
-o
:表示兩種中間滿足一個;
-not
:表示非;
例如:find /tmp –type – not –d –a –not –f
:表示查詢不是目錄並且不是套接字的檔案;
find ./ -not –user user1 –o –not –type d
等價於 find ./ -not \( -user user1 –a –type d \)
;
根據時間戳進行查詢:
-mtime
:表示修改時間;
-ctime
:表示檔案的修改時間;
-atime
:表示檔案的訪問時間;
支援使用+|-
進行修飾,上面表示的時間單位是天,如果不使用表示精確到某一個時刻;-
:表示多久時間之內訪問的檔案;+
:表示多久時間之前訪問的檔案;5
:表示5
天之前訪問的檔案;-5
:表示五天之內訪問的檔案;+5
:表示五天之前訪問的檔案;
同樣也支援精確到分鐘的操作:
-mmin
:表示修改時間;
-amin
:表示訪問時間;
-cmin
:表示改變時間;
按照許可權進行查詢:
-perm MODE
:表示精確匹配,;
\MODE
:表示只要有一個許可權匹配到就可以;
-perm –mode
:當檔案許可權完全包含mode
時,才可以進行匹配;
find ./ perm -001
find
執行的動作:
-print
:顯示;
-ls
:類似 ls –l
的形式顯示每一個檔案的詳細資訊;
-ok command {} \;
:使用\;
結尾,否則就是語法錯誤,作為檔名稱佔位符號;find ./ -perm -mode 001 -ok chmod o-x {} \;
這種方式是需要確認的
-exec command {} \;
: 這裡是不會存在提示資訊的;
find /etc –size +1M –exec echo {} >> /tmp/etc.largefiles \;
作用等價於 find /etc –size +1M | xargs echo >> /tmp/etc.largefiles
;