文件搜索命令
文件搜索命令:which
命令名稱:which
命令所在路徑:/usr/bin/which
執行權限:所有用戶
語法:which [命令名稱]
功能描述:顯示系統命令所在目錄,以及別名記錄
範例:$which ls
一切皆文件:命令根據權限(路徑)可分為兩類:1,root /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 根據文件大小查找 大多數linux以block數據塊 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下提供。
locate與find不同,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 存放了所有網絡協議對應的端口和信息
文件搜索命令