linux下4種常見的檔案搜尋命令
1、檔案搜尋命令locate(定位,尋找)
最大的好處,速度快
格式: locate 檔案名稱
返迴文件的路徑
搜尋方式:在後台資料庫中按照檔案名稱搜尋,每天更新一次
因此建立的檔案往往要第二天才能搜尋出來
但是也可以強行更新資料庫 執行命令updatedb既可以
資料庫的位置 /var/lib/mlocate(版本不同位置不同)
搜尋的設定檔:/etc/updatedb.conf 其中指定有些目錄
不參與搜尋 比如/etc/temp
缺點:只可以按照檔案名稱來搜尋
例子:locate javatest
2、命令搜尋命令whereis 與which
whereis搜尋命令的所在位置,不搜尋檔案
-b 只查看可執行檔所在位置
-m 只查看協助文檔所在位置
which 搜尋命令的所在位置,還可以查看別名,不搜尋檔案
兩種搜尋在path環境路徑下搜尋 echo $PATH
例子:whereis ls which ls
3、find(全部搜尋,每一個檔案名稱)
功能非常的強大,但是比較耗費資源
因此,盡量避免大範圍的查詢
格式:find 搜尋範圍 搜尋條件
find / -name test 在根目錄下搜尋
搜尋的內容要和檔案名稱一模一樣
如果要搜更多 則需要模糊比對(*可以實現)匹配內容寫在""中
* 匹配任意內容(多個字元)
? 匹配任意單個字元
[] 匹配中括弧中的任意一個字元
選項參數:
-name 按照檔案名稱
-iname 檔案名稱不區分大小寫
-user 按照所有者搜尋 find /root -nouser 沒有所有者檔案
核心產生,外來檔案之外的所有檔案都需要有所有者
-mtime 尋找指定時間修改的檔案
-atime 尋找指定時間被訪問檔案
-ctime 尋找指定時間檔案屬性改變的檔案
參數-10 10天之內 +10 10天之前 10第10天(注意都是過去時)
-size 按照檔案大小
find . -size +25k(+25k大於25k 兆是大寫M 不寫單位表示資料區塊(扇區資料區塊512byte).標識目前的目錄)
-inum 按照指定的i節點來搜尋檔案
-a (and) 邏輯與 兩個條件都滿足
-o (or) 邏輯或
-exec(中間添加第二條命令比如 ls,rm -rf) {} \; 命令1的結果讓命令2來處理
例子:
find . -name test
find . -name test.gz
find . -name "*" 全部
find . -name "*.gz" 該目錄下全部以gz結尾檔案
find . -atime -10
find . -size -10k 10kb以下
find . -size -100M 10M以上
find . -size -10k -a -atime -10
find . -size -10k -a -atime +10
find . -name "*" -a -size -10k -exec ls -lhi {} \;(\前面一定要有空格)
4、grep
格式:grep 選項 字串 檔案名稱 在檔案中尋找包含關鍵字的字串行
匹配需要Regex匹配
例子:grep "size" 檔案名稱
-v 取反
搜尋匹配是檔案名稱 則用萬用字元 萬用字元是完全符合
搜尋檔案中的內容 則使用Regex包含匹配
例子:
grep "log" install.log
find與grep的區別
find是尋找匹配檔案
grep是檔案中匹配字串