linux查找文件locate,grep,find

查找文件一般有以下幾個命令

which   查看可執行文件的位置
whereis  查看可執行文件的位置及相關文件
locate   配合數據庫緩存,快速查看文件位置
grep     過濾匹配,他是一個文件搜索工具
find     查找相關文件

which cd 用於查找命令的位置

 

 

whereis cd   輸出命令相關的目錄和配置文件

 

 

 

locate 速度快,從數據庫中查找

  • 默認數據庫24個小時更新
  • 手動更新數據庫  updatedb
當我們在用戶目錄下新建一個文件1.txt, 直接locate 1.txt是查找不到的
這時就要更新一下數據庫updatedb,現在就可以找到創建的文件了

 

 

grep用於查找文件中的內容

grep [選項] 字符串 文件名
# 在文件當中匹配符合條件的字符串
選項:
    -i 忽略大小寫
    -v排除指定字符串(取反)
   -n 顯示行號
匹配一個詞:
grep word filename

將文件中,沒有word的那行取出來,並顯示行號
grep -nv word filename

從多個文件裏匹配,並顯示行號:
grep -n word filename1 filenam2 filename3
查看兩個文件中共同存在的行,並顯示行號
grep -nxf 1.txt 11.txt

查看a.txt的文件比b.txt的文件多出來的部分
grep -vxf b.txt a.txt
查找11.txt文件中是否有某些行的開頭是數字1
grep ^1 11.txt

查找11.txt文件中是否有某些行的結尾是數字1
grep 1$ 11.txt 1.txt 

 

以遞歸的方式查找符合條件的文件, 查找/home/sunlizhao目錄下所有包含11111的文件
grep -r 11111 /home/sunlizhao/

 

 

 

 

 

 

 

 

 

 

 

 

find 

按照文件名搜索
find /home/ -name ok.txt

  • 避免大範圍搜索,會非常耗費系統資源

 

嚴格區分大小寫,如果要進行模糊查詢,就要用到通配符

* 匹配任意內容
? 匹配任意一個字符
[] 匹配任意一箇中括號內的字符

 

find /root -iname install.log  #搜索名稱不區分大小寫
find /root -user root   #按照所有者搜索
find /root -nouser   #查找沒有所有者的文件(內核產生或者外來文件)

 

時間搜索

find /var/log/ -mtime +10
#查找10天前修改的文件
-10 10天內修改文件
10 10天當前修改的文件
+10 10天前修改的文件
  • atime 文件訪問時間
  • ctime 改變文件屬性
  • mtime 修改文件內容

查找某個目錄下四天之內 內容被修改的文件

 

大小搜索

find . -size 25k
#查找文件大小是25kb文件
    -25k 小於25kb的文件
    25k 等於25kb的文件
    +25k 大於25kb的文件

 

邏輯搜索

find . -size +25k -a -size -50k
# 查找當前目錄下大於20k並且小於50kb的文件
  • -a and邏輯與,兩個條件都滿足
  • -o or 邏輯或, 兩個條件滿足一條即可

查找出某個目錄小於1k,大於40M的文件

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章