檔案查詢:
在檔案系統上查詢符合條件的檔案
檔案查詢:locate(非實時查詢),find(實時查詢)
locate:
依賴於事先構建的索引,索引的構建是在系統較為空閒時自動進行(週期性任務):手動更新資料庫
索引構建過程需要遍歷整個根檔案系統,極消耗資源
工作特點:
查詢速度快
模糊查詢
非實時查詢
find:
實時查詢工具,通過遍歷指定路徑下的檔案系統完成檔案查詢:
工作特點:
查詢速度略慢
精確查詢
實時查詢
語法:
find [option] ……[查詢路徑] [查詢條件] [處理動作]
查詢路徑:指定具體目標路徑:預設為當前目錄
查詢條件:指定的查詢標準,可以檔名、大小、型別、許可權等標準進行,預設為找出指定路徑下的所有檔案
處理動作:對符合條件的檔案做什麼操作,預設輸出至螢幕
查詢條件:
根據檔名查詢:
-name 「檔名稱」:支援使用glob *,?,[ ],[^]
-iname 「檔名稱」:不區分大小寫
-regex 「pattern」:以pattern匹配整個檔案路徑字串,而不僅僅是檔名稱
根據屬主、屬組查詢:
-user username:查詢屬主為指定使用者的檔案
group grpname:查詢屬組為指定組的檔案
-uid userid:查詢屬主為指定uid號的檔案
-gid groupid:查詢陣列為指定gid號的檔案
-nouser:查詢沒有屬主的檔案
-nogroup:查詢沒有屬組的檔案
根據檔案型別查詢:
-type type:
f:普通檔案
d:目錄檔案
s:套接字檔案
b:塊裝置檔案
c:字元裝置檔案
p:管道檔案
組合條件:
與:-a
或:-o
非:-not,!
!a -a !b=!(a -o b)
!a -o !b=!(a -a b)
例如:找出/tmp目錄下,屬主不是root,且檔名不是fstab的檔案:
find /tmp \(-not -user root -a -not -name 'fstab' \) -ls
find /tmp -not \(-user root -o -name 'fstab' \) -ls
根據檔案大小來查詢:
-size [+|-]#unit
常用單位:k,m,g
#unit:(#-1,# ]
-#unit:[ 0,#-1 ]
+#unit:(#,∞)
根據時間戳:
以「天」為單位:
-atime [ +|- ] #
#:[#,#+1)
+#:[#+1,∞]
-#:[0,#)
-mtime
-ctime
根據許可權查詢:
-perm [+|-]mode
mode:精確許可權匹配
+mode:任何一類(u,g,o)物件的許可權中只要能一位匹配即可
-mode:每一類物件都必須同時擁有為其指定的許可權標準
處理動作:
-print:預設的處理動作,顯示至螢幕
-ls:類似於對查詢到的檔案執行「ls -l」命令
-delete:刪除查詢到的檔案
-fls /path/to/somefile:查詢到的所有檔案的長格式資訊儲存至指令檔案中
-ok command {}\:對查詢到的每個檔案執行由command指定的命令,執行前都會互動式要求使用者確認
-exec command {}\:對查詢到的每個檔案執行由command指定的命令
注意:find傳遞查詢到的檔案至後面指定的命令時,查詢到所有符合條件的檔案一次性傳遞給後面的命令,有些命令不能接受過多的引數,此命令執行可能會失敗,另一種方式可規避此問題:
find | xargs command
Linux的檔案查詢
一 which 命令查詢 查詢ls命令的位置 which ls 從path環境變數 或者 whereis vim 二 find 檔案查詢 針對檔名 1.語法 find path.options expression action 命令 路徑 選項 表示式 動作 2.按檔名 root zz find ...
linux檔案查詢
命令與檔案的查詢 which 尋找執行檔案 which a command a 將所有由path目錄中可以找到的命令均列出來,而不只是第乙個被找到的命令名稱 eg which a ifconfig 檔案的查詢 whereis 尋找特定的檔案 bmsu 檔案或者目錄 引數 b 只尋找二進位制檔案 m ...
linux 檔案查詢
文字查詢 grep egrep fgrep 檔案查詢 locate find locate和find的區別 locate有自維護的資料庫 linux自建,與所有檔案關聯 每天linux會定時對其進行更新,而locate就在此資料庫中查詢,所以查詢速度非常快,但是缺點也很明顯,不能實時查詢 比如剛裝l...