Linux的檔案查詢

2022-07-24 00:39:28 字數 2375 閱讀 1510

檔案查詢:

在檔案系統上查詢符合條件的檔案

檔案查詢: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...