在以前的課程中,咱們介紹了Linux系統的經常使用文件處理命令和權限管理命令,今天咱們繼續來學習Linux操做系統的其餘處理命令。數據庫
一、文件搜索命令 which
命令解釋vim
which
/usr/bin/which
which [命令名稱]
好比咱們想要查找 ls
命令所在目錄:windows
$ which ls學習
注意:
which
命令只能用於查找命令所在路徑,不能查找普通文件,好比想用該命令查找名爲ffile1的文件,執行which file1
以後是會提示no file
:操作系統
與 which
命令功能相似的命令 whereis
,使用方法和which
同樣,好比查找 chmod
命令所在位置:命令行
$ whereis chmod
3d
二、文件搜索命令 find
命令解釋unix
find
/usr/bin/find
find [搜索路徑] [參數] [查找關鍵字]
其實這條命令有點相似於在咱們windows系統裏面查找文件,只不過在Linux裏面是用命令行來查找而已。find
命令中,參數有幾十種,咱們介紹經常使用的幾種。code
/etc
目錄查找名爲dnf
的文件
$ find /etc -name dnf
blog
你們能夠看到,爲我找出了2個名爲dnf
的文件。這裏提醒一下你們,這裏查找是全匹配查找,並非模糊查找,意思是這裏只會爲我查找名稱全名爲dnf
的文件,而不是查找名稱包含dnf
的文件。
可是在有些狀況下,咱們確實須要進行模糊查找,好比忘記了文件的全名,可能只記得文件名是dnf
開頭,那麼咱們能夠用一個通配符 *
來進行查找:
$ find /etc -name dnf*
你們能夠看到,爲我查找出來了5個以dnf
開頭的文件,其中包含了全名是dnf
的文件,所以咱們能夠清楚 *
號是匹配任意字符。
還有一種狀況,好比我清晰的記得文件是dnf
開頭的,文件全名有8個字符,後面5個字符不記得了。在這種狀況下,咱們能夠用 ?
來進行輔助查找,一個?
匹配一個字符:
$ find /etc -name dnf?????
咱們能夠看到,爲我查找出了2個文件名爲dnf
開頭,全名是8個字符的文件。
注意:使用
find
查找文件,佔用系統的資源越少越好,所以咱們在查找的時候,定位路徑越精確越好,查找的關鍵字越全越好。並且最好不要在系統根目錄下面查找,這樣會全盤掃描,會消耗系統的大量資源。
-size
這裏文件大小通常都是以block數據庫塊來計算的,一個數據塊=512字節,所以1KB=2個數據塊。好比咱們要查找文件大小爲1M的文件:
$ find /etc -size +2048
你們注意,在數字2048
前面我用了一個+
號,表示文件大於1M。若是是小於1M,咱們能夠用-
號:
$ find /etc -size -2048
-user
好比我要查找全部者爲系統用戶chuan
的用戶的文件:
$ find /etc -user chuan
這個屬性有點複雜,能夠按照天來查找,也能夠按照分支來查找:
天:
ctime
,atime
,mtime
分鐘:
cmin
,amin
,mmin
c-change:
表示文件的屬性被修改,包含全部者、所屬組、權限a-access
:表示被訪問、瀏覽過m-modify
:表示文件的內容被修改過這裏還有個要注意的,就和咱們在使用-size
屬性同樣,有-+
的輔助, -
表示以內,+
超過。好比咱們查找2分鐘內被修改過的文件:
$ find /etc -mmin -2
-type
經常使用的類型有二進制文件 f
,軟連接文件 l
,目錄 d
。好比咱們要查找類型爲f
的文件:
$ find /etc -type f
若是咱們想要在/home
路徑查找名稱爲 up
開頭的目錄,該如何查找呢?這裏咱們就要用到Linux查找的鏈接符:
那麼咱們的命令能夠寫成:
$ find /home -name up* -a -type d
-exec
在上一個說到根據文件類型來查找的時候,咱們有用到查找鏈接符 -a
和 -o
,這裏再介紹一個相對複雜一點的鏈接符 -exec
。意思是:在執行命令查找完以後,再接着對執行結果進行操做。
好比咱們查找 /var/log
目錄下面文件名爲 dnf
開頭的文件,並列出這些文件的屬性:
$ find /var/log -name dnf* -exec ls -l {} \;
你們確定很疑惑這條命令中 {} \;
是什麼意思,其實這個是固定格式,你們記住就好了。{}
表示 find
查詢的結果
三、locate
命令使用詳解
locate
list files in databases
/usr/bin/find
locate [查找關鍵字]
該命令在unix系統裏面不提供,只有Linux系統纔有
好比要查找 service
的文件:
$ locate service
執行這條命令,你們會發現查找速度很是快,比 find
命令查找文件快多了。那有些同窗就會說,我就用 locate
命令查找文件,幹嗎還要 find
命令呢?
爲解答這個問題,咱們先建立一個新的文件,好比我在 test
目錄新建一個 file3
的文件,而後再執行命令 $ locate file3
,發現並無查找結果,可是這個文件缺失是存在的。
這是爲何呢?由於執行 locate
命令查找,是經過Linux文件數據庫去查找,並非掃描磁盤,所以查找速度會要比 find
查找快不少。而我剛新建的文件,並無同步到Linux的文件數據庫裏面去,所以經過 locate
是查找不到的。那麼咱們如何把新建的文件同步到Linux文件數據庫呢?有兩種方式:
因此接下來咱們來說解Linux的另一個命令:updatedb
四、updatedb
命令使用詳解
updatedb
update the slocate database
/usr/bin/updatedb
updatedb
$ updatedb
五、grep
命令使用詳解
grep
/bin/grep
grep [指定字符] [源文件]
注意:這個命令並非搜索文件,而是在文件中搜索匹配的字符串,並輸出這一行。可是
grep
的做用不只僅如此,後面教程中咱們會繼續介紹該命令的使用。
好比我要查找 /etc/services
文件裏面的 tftp
相關的,若是咱們直接用以前學習的命令好比 cat
、vim
、more
等命令,發現文件內容太長,太難找了,這種狀況下咱們執行:
$ grep tftp service
以上4種命令就是咱們平常中使用最多的文件搜索相關的命令以及使用方法。