1. 程式人生 > >文件搜索命令

文件搜索命令

mod 語句 sam 進行 節點 alias 是否 文件搜索 ase

文件搜索命令:which

命令名稱:which

命令所在路徑:/usr/bin/which

執行權限:所有用戶

語法:which [命令名稱]

功能描述:顯示系統命令所在目錄,以及別名記錄

範例:$which ls

一切皆文件:命令根據權限(路徑)可分為兩類:1root /sbin /usr/sbin 2,普通路徑 /bin /usr/bin

此命令可根據查找的命令所在的路徑判斷其權限。

whereis [命令名稱]

which類似

可以顯示系統命令的所在路徑以及幫助文檔(所在文檔)

文件搜索命令:find

命令名稱:find

命令所在路徑:/usr/bin/find

執行權限:所有用戶

語法:find [搜索路徑

] [搜尋關鍵字]

功能描述:查找文件或目錄(任意)

範例:

$find /etc -name init 在目錄/etc中查找文件或目錄init

$find / -size +204800 在根目錄下查找大於100MB的文件或目錄

$find /home -usr samlee 在根目錄下查找所有者為samlee的文件或目錄

-name 根據文件名查找

在根目錄下查找,會遍歷整個硬盤,占用大量資源,應避免。

當只記得文件名一部分時,可以使用通配符,常用的通配符有兩個

一個是 * 匹配任意字符,包括零個字符

比如要查找以init開頭的文件或目錄,則init*

則可

若要查找包含init的文件或目錄,則*init*則可

另一個是? 匹配單個字符 比如文件或目錄名含7個字符,只記得前4個,則可用init???則可

總之在查詢時要盡可能的精確路徑,精確關鍵詞。節省系統資源,占用系統資源越少越好。

-size 根據文件大小查找 大多數linuxblock數據塊 512字節=0.5kb(基本通用)

100MB=block

100MB=102400KB=204800block

大於 +204800

小於 -204800

等於 204800

-user 根據文件所有者查找

另外是根據時間查找

1,天 ctime atime mtime

2,分鐘 cmin amin mmin

c-change改變,表示文件的屬性被修改過,所有者,所屬組,權限。

a-access 訪問,表示被人查看過

m-modify修改,表示文件內容被修改過

- 表示多長時間之內,如-1

+ 超過

$find /etc -mmin -120 120分鐘內被修改過內容的文件有哪些。

$find /etc -ctime -1 /etc下查找24小時內被修改過程屬性的文件和目錄

1.連接符 -a and邏輯與 -o or邏輯或

$find /etc -size +163840 -a -size -204800 /etc下查找大於80MB小於100MB的文件

$find /etc -name init* -a -type(類型) f(二進制文件) /etc目錄下查找init開頭且類型為二進制文件的文件

$find /etc -name init* -a -type l(軟連接文件)/etc目錄下查找init開頭且類型為軟連接的文件

-type 意為文件類型 f 二進制文件 l 軟連接文件 d 目錄

$find /etc -name init* or -size +204800 /etc下查找以init開頭或大小大於100MB的文件或目錄

2.連接符 find ...... -exec 命令 {} \;

{}表示前面find查詢的結果

/ 表示一個轉義符(符號命令使用本身的含義)

$rm testfile

rm: remove regular cmpty file ‘testfile’? Y

$ which rm

alias rm=’rm -i’ //這也就是所說的別名,而\的使用則使其變成最原始的rm-i選項

/bin/rm

$ \rm tesyfile //此時直接刪除

$

;則表示語句的結束

$find /etc -name inittab -exec ls -l {} \; 查看/etc目錄下inittab的詳細信息

$find /etc -name testfile3 -exec rm {}\;/etc下的testfile3文件直接刪掉

$find /test -name test -exec ls -l {} \;/test下的test文件列出詳細信息

連接符 -ok(詢問輸入)

$find /etc -name inittab -ok ls -l {} \;意為查找到目標文件後,詢問是否執行ls

$find /etc -name inittab -ok rm {} \;當後面的命令為rm時顯得至關重要,詢問是否移除。

$find /etc -name init* -a -type f -exec ls -l {} \;意為列出/etc下的以init開頭的二進制文件的詳細信息

另外的選項:根據i節點查找 無論文件名多奇怪,它總有一個i節點。i節點可以映射到多個文件,所以硬連接可以更新。

ls -i 便可列出此目錄下文件的i節點

只要獲得i節點便可利用find命令進行刪除

例如:

無論發現何等奇異名字的文件,都可通過find查找i節點的方法來進行刪除。

文件搜索指令:locate

指令名稱:locate

指令英文原意:list files in databeses

指令所在路徑:/usr/bin/locate

執行權限:all user

語法:locate [搜索關鍵字]

功能描述:尋找文件或目錄

範例:$locate file

列出所有和file相關的文件

locate經常查找一些系統默認安裝的命令,配置文件等。

此命令在unix下一般不提供,只在linux下提供。

locatefind不同,find是在目錄下查找,locate是在定期更新的數據庫中查找所以速度非常快,locate經常和命令updatedb配合使用

文件搜索指令:updatedb

指令英文原意:update the slocate database

指令所在路徑:/usr/bin/updatedb

執行權限:root

語法:updatedb

功能描述:建立整個系統目錄文件的數據庫

範例:#updatedb

當建立新文件,而新文件沒有錄入數據庫時,通過locate則不能查找到

linix系統下會有個計劃任務定期執行updatedb

文件搜索命令:grep

命令名稱:grep

命令所在路徑:/bin/grep

執行權限:所有用戶

語法:grep [指定字串] [源文件]

功能描述:在文件中搜尋字串匹配的行並輸出

範例:#grep ftp /etc/services 所有和ftp相關的行輸出出來

/etc/services 存放了所有網絡協議對應的端口和信息

文件搜索命令