查詢檔案 TLCL

2022-07-04 05:51:13 字數 3617 閱讀 7290

locate 執行快速的路徑名資料庫搜尋,輸出每個與指定子字串相匹配的路徑名。

locate bin/zip

locate 命令的資料庫是updatedb命令建立的。

locate只能依據檔名查詢檔案,而find命令能基於各種各樣的屬性 搜尋乙個給定目錄(以及它的子目錄),來查詢檔案.

find ~            find 命令接收乙個或多個目錄名來執行搜尋

find ~ -type d         -type d 限制了只搜尋目錄

find 命令支援的常見檔案型別測試條件:

b  塊特殊裝置檔案

c  字元特殊裝置檔案

d  目錄

f  普通檔案

l  符號鏈結

-name後面跟萬用字元模式,根據檔名來搜尋。

-size根據檔案大小來搜尋,+表示大於指定數的檔案,-表示小於指定數的檔案,沒有則精確匹配這個數。

b 512 byte blocks【預設】

c bytes

w two byte words

k kilobytes

m megabytes

g gigabytes

需要數值引數的 =情況下,可以應用以上「+」和「-」符號表示法。

-cmin n          匹配 【內容和屬性】修改時間在n分鐘前的檔案和目錄【「+」和「-」符號表示法】

-ctime n          匹配 【內容和屬性】修改時間在n*24小時前的檔案和目錄【「+」和「-」符號表示法】

-cnewer file         匹配 【內容或屬性】的最後修改時間晚於file的檔案和目錄

-mmin n          匹配 【內容】修改時間在n分鐘前的檔案和目錄【「+」和「-」符號表示法】

-mtime n          匹配 【內容】修改時間在n*24小時前的檔案和目錄【「+」和「-」符號表示法】

-newer file          匹配 【內容】的最後修改時間晚於file的檔案和目錄

-user name          匹配 屬於乙個使用者的檔案和目錄【使用者名稱或使用者id來表示】

-group name          匹配 屬於乙個組的檔案和目錄【組名或組id來表示】

-nouser            匹配 不屬於乙個有效使用者的檔案和目錄

-nogroup           匹配 不屬於乙個有效的組的檔案和目錄

-iname pattern         跟-name相似,但不區分大小寫。

-name pattern         用指定的萬用字元模式匹配的檔案和目錄。

-inum n            匹配inode號是n的檔案。這對於找到某個特殊 inode 的所有硬鏈結很有幫助。

-samefile name        類似於-inum 測試條件。匹配和檔案 name 享有同樣 inode 號的檔案。

-size n            匹配大小為n的檔案

-empty            匹配 空檔案和目錄

-perm mode          匹配許可權已經設定為指定的 mode的檔案或目錄【八進位制或符號表示法】

-type c             匹配檔案型別是 c 的檔案

-and/-a            兩邊的測試條件都是真【預設】

-or              兩邊的任乙個測試條件為真

-not              match if the test following the operator is false.

()                這用來控制邏輯計算的優先順序,預設從左到右的順序計算。

find ~ \( -type f -not -perm 0600 \) -or \( -type d -not -perm 0700 \)
expr1 -operator expr2

所有情況下,expr1總會執行,expr2要根據expr1的執行結果

expr1 的結果

操作符expr2 is...

真-and

總要執行

假-and

從不執行

真-or

從不執行

假-or

總要執行

-delete          刪除當前匹配的檔案

-ls            執行ls -dils命令,將結果輸出到標準輸出

-print           把匹配檔案的全路徑名輸送到標準輸出【預設】

-quit            一旦找到乙個,退出

-exec command {} ;    {}是當前路徑名的符號表示,分號是必要的分隔符表明命令的結束

-ok command {} ;     執行每個指定的命令之前, 會提示使用者

花括號和分號對於 shell 有特殊含義,所以它們必須被引起來或被轉義。

find ~ -type f -name '*.bak' -delete【用-print操作替換-delete,確認結果】
find ~ -type f -name 'foo*' -exec ls -l '{}'';'

find ~ -type f -name 'foo*' -exec ls -l '{}'+【把末尾的分號改為+,把搜尋結果結合為乙個引數列表。】

xargs 命令從標準輸入接受輸入,並把輸入轉換為乙個特定命令的引數列表。

find ~ -type f -name 'foo*' -print | xargs ls -l

古怪名字處理方法:

使用這項技術,我們可以保證所有檔案,甚至那些檔名中包含空格的檔案,都能被正確地處理。

其他選項

-depth            先處理目錄中的檔案,再處理目錄自身。

-maxdepth levels        進入目錄樹的最大深度

-mindepth levels        進入目錄樹的最小深度

-mount            指示find不要搜尋掛載到其他檔案系統上的目錄

-noleaf            指示 find 程式不要基於自己在搜尋 unix 的檔案系統的假設,來優化它的搜尋。

Linux find 查詢檔案

在日誌資料夾下判斷是否有web伺服器的日誌資料夾,寫了個指令碼 bin bash cd wls annuity acc for sys in cat wiiserver name list.txt do find logs sys name sys xargs echo en n 123.txt f...

Linux查詢檔案

which locate whereis find which命令 用途 查詢可執行檔案並顯示所在的位置,適用於系統命令,shell命令無法查詢 which lsb release 檢視命令的絕對路徑,即這個可執行檔案的位置 usr bin lsb release which cd 查詢不到路徑,c...

Linux 查詢檔案

whereis 程式名稱 查詢軟體的安裝路徑 b 只查詢二進位制檔案 m 只查詢幫助檔案 s 只查詢源 u 排除指定型別檔案 f 只顯示檔名 b 目錄 在指定目錄下查詢二進位制檔案 m 目錄 在指定目錄下查詢幫助檔案 s 目錄 在指定目錄下查詢源 locate 檔名稱 在檔案索引資料庫中搜尋檔案 d...