linux常用指令(二) 檔案搜尋指令

2021-09-10 17:01:19 字數 3892 閱讀 9291

檔案搜尋指令:

一、locate:這個 locate 的使用更簡單,直接在後面輸入「檔案的部分名稱」後,就能夠得到結果。 舉上面的例子來說,我輸入 locate passwd ,那麼在完整檔名 (包含路徑名稱) 當中,只要有 passwd 在其中, 就會被顯示出來的!這也是個很方便好用的指令,如果你忘記某個檔案的完整檔名時~~但是,這個東西還是有使用上的限制呦!為什麼呢?你會發現使用 locate 來尋找資料的時候特別的快, 這是因為 locate尋找的資料是由「已建立的資料庫 /var/lib/mlocate/」 裡面的資料所搜尋到的,所以不用直接在去硬碟當中訪問資料,呵呵!當然是很快速囉!那麼有什麼限制呢?就是因為他是經由資料庫來搜尋的,而資料庫的建立預設是在每天執行一次 (每個 distribution 都不同,centos 7.x 是每天更新資料庫一次!),所以當你新建立起來的檔案, 卻還在資料庫更新之前搜尋該檔案,那麼 locate 會告訴你「找不到!」呵呵!因為必須要更新資料庫呀!

那能否手動更新資料庫哪?當然可以啊!更新 locate 資料庫的方法非常簡單,直接輸入「 updatedb 」就可以了! updatedb

指令會去讀取 /etc/updatedb.conf 這個配置檔案的設定,然後再去硬碟裡面進行搜尋檔名的動作, 最後就更新整個資料庫檔案囉!因為 updatedb 會去搜尋硬碟,所以當你執行 updatedb 時,可能會等待數分鐘的時間喔依據 /var/lib/mlocate 內的資料庫記載,找出使用者輸入的關鍵字檔名

選項與引數:

-i :忽略大小寫的差異;

-c :不輸出檔名,僅計算找到的檔案數量

-l :僅輸出幾行的意思,例如輸出五行則是 -l 5

-s :輸出 locate 所使用的資料庫檔案的相關資訊,包括該資料庫紀錄的檔案/目錄數量等

-r :後面可接正規表示式的顯示方式

例子:

locate -l 5 passwd #找出系統中所有與 passwd 相關的檔名,且只列出 5 個

locate -s #列出 locate 查詢所使用的資料庫檔案之檔名與各資料數量

updatedb:根據 /etc/updatedb.conf 的設定去搜尋系統硬碟內的檔名,並更新 /var/lib/mlocate 內的資料庫檔案;

二、whereis :從特定的目錄(/usr/bin,/usr/share等目錄)中查詢檔案

選項與引數:

-l :可以列出 whereis 會去查詢的幾個主要目錄而已

-b :只找 binary 格式的檔案

-m :只找在說明文件 manual 路徑下的檔案

-s :只找 source **檔案

-u :搜尋不在上述三個專案當中的其他特殊檔案

三、find

選項與引數:

1. 與時間有關的選項:共有 -atime, -ctime 與 -mtime ,以 -mtime 說明

-mtime n :n 為數字,意義為在 n 天之前的「一天之內」被更動過內容的檔案;

-mtime +n :列出在 n 天之前(不含 n 天本身)被更動過內容的檔案檔名;

-mtime -n :列出在 n 天之內(含 n 天本身)被更動過內容的檔案檔名。

-newer file :file 為乙個存在的檔案,列出比 file 還要新的檔案檔名

2. 與使用者或群組名稱有關的引數:

-uid n :n 為數字,這個數字是使用者的帳號 id,亦即 uid ,這個 uid 是記錄在

/etc/passwd 裡面與帳號名稱對應的數字。這方面我們會在第四篇介紹。

-gid n :n 為數字,這個數字是群組名稱的 id,亦即 gid,這個 gid 記錄在

/etc/group,相關的介紹我們會第四篇說明~

-user name :name 為使用者帳號名稱喔!例如 dmtsai

-group name:name 為群組名稱喔,例如 users ;

-nouser :尋找檔案的擁有者不存在 /etc/passwd 的人!

-nogroup :尋找檔案的擁有群組不存在於 /etc/group 的檔案!

當你自行安裝軟體時,很可能該軟體的屬性當中並沒有檔案擁有者,

這是可能的!在這個時候,就可以使用 -nouser 與 -nogroup 搜尋。

3. 與檔案許可權及名稱有關的引數:

-name filename:搜尋檔名稱為 filename 的檔案;

-size [+-]size:搜尋比 size 還要大(+)或小(-)的檔案。這個 size 的規格有:

c: 代表 byte, k: 代表 1024bytes。所以,要找比 50kb

還要大的檔案,就是「 -size +50k 」

-type type :搜尋檔案的型別為 type 的,型別主要有:一般正規檔案 (f), 裝置檔案 (b, c),

目錄 (d), 鏈結檔案 (l), socket (s), 及 fifo (p) 等屬性。

-perm mode :搜尋檔案許可權「剛好等於」 mode 的檔案,這個 mode 為類似 chmod

的屬性值,舉例來說, -rwsr-xr-x 的屬性為 4755 !

-perm -mode :搜尋檔案許可權「必須要全部囊括 mode 的許可權」的檔案,舉例來說,

我們要搜尋 -rwxr--r-- ,亦即 0744 的檔案,使用 -perm -0744,

當乙個檔案的許可權為 -rwsr-xr-x ,亦即 4755 時,也會被列出來,

因為 -rwsr-xr-x 的屬性已經囊括了 -rwxr--r-- 的屬性了。

-perm /mode :搜尋檔案許可權「包含任一 mode 的許可權」的檔案,舉例來說,我們搜尋

-rwxr-xr-x ,亦即 -perm /755 時,但乙個檔案屬性為-rw-------也會被列出來,因為他有 -rw.... 的屬性存在!

4. 額外可進行的動作:

-exec command :command 為其他指令,-exec 後面可再接額外的指令來處理搜尋到的結果。

-print :將結果列印到螢幕上,這個動作是預設動作!

例子:

#24小時內更改過的內容的檔案

find / -mtime 0

#4天前更改過的內容的檔案

find / -mtime +4

#4天內更改過的內容的檔案

find / -mtime -4

#4-5天那一天更改過的內容的檔案

find / -mtime 4

#查詢賬戶使用者為dmtsai的檔案

find / -user dmtsai

#查詢不屬於系統任何人的檔案

find / -nouser

#查詢檔案名為passwd的檔案

find / -name passwd

#查詢檔案名中含有passwd的檔案

find / -name "*passwd*"

# 查詢檔案型別為socket的檔案

find / -type s

#查詢檔案字尾為.conf的檔案中有關鍵字test(忽略大小寫)的檔案 其中{}是將該符號前執行的命令內容傳到其中 \;是結束該指令 -print是將剛指令列印在螢幕上

find / -name "*.conf" -exec grep -i 'test' {} \; -print

#查詢檔案大小在50k到60k之間的檔案並列出來er

find / -size +50k -size +60k -ls

#查詢檔案使用者為www的檔案或者檔案大小大於5k的檔案

find / -user www -o -size +5k

#查詢檔案使用者為www的檔案且檔案大小大於5k的檔案

find /  -user www -a -size +5k

Linux基本指令(二)(檔案操作 壓縮)

檔案的基本操作 建立檔案 touch 格式 touch 檔名 建立資料夾 mkdir 格式 mkdir 目錄名 p 遞迴建立檔案目錄 刪除檔案 rm r 刪除目錄 f 不提示 一般使用方式 rm rf 要刪除的檔案修改檔案 mv 移動檔案 格式 mv 原始檔路徑 目標路徑 目標路徑如果是目錄位址 則...

Linux基礎之(二)檔案的搜尋

檔案搜尋和新建檔案類似的,在終端中提供了多種方式進行檔案的搜尋,常用的也是三種方式.對於which指令來說,首先需要注意的是which命令只能搜尋path環境變數中的內容,比如搜尋乙個命令程式所在的具體路徑,如果該命令存在於path環境變數中,則能搜尋到,否則搜尋不到。也由於這點,使得which命令...

Linux常用指令(1) 檔案與目錄管理

linux常用指令有很多,現將他們按照不同的分類進行了整理。cd 相對路徑或絕對路徑 變換目錄 change directory cd 回到當前使用者的家目錄 cd 回到當前使用者的家目錄 cd 切換到上一級目錄 cd 回到剛才的目錄 cd 絕對路徑 指定要切換到的目錄的完整路徑名稱 cd 相對路徑...