linux查找命令(find、locate、which、whereis、grep)

  • find

    • 所在路徑:/bin/find
    • 執行權限:所有用戶
    • 功能描述:查找文件
    • 語法:find 【查找範圍】【匹配條件】
      • -name 按名字查找
        • *:匹配所有字符。test*:匹配所有以test開頭的。
        • ?:匹配單個字符。test???:匹配所有以test開頭且之後必須有也僅有三個字符。
          如:find /etc -name test.c
      • -iname:與-name一樣按名字查找,但忽略大小寫。
      • -size:按文件大小查找。
        • 單位爲一個數據塊=512B=0.5kB。
        • +n:大於n數據塊。
        • -n:小於n數據塊
        • =n:等於n數據塊。(很少用)
      • -user:按照用戶名查找。
      • -group: 按照所屬組查找。
      • -amin:訪問時間access。
      • -cmin:最近多少分鐘內,文件屬性被修改。也就是ls -l中顯示的跟該文件或者目錄相關的屬性。

        如find /etc -cmin -5
        查找/etc下最近五分鐘內被修改過屬性的文件或者目錄。

      • -mmin:文件內容modify。也就是最近多少分鐘內,文件內容被修改。
      • 查找條件有多個時。
        • -a :前後兩者都滿足。
        • -o: 前後兩者至少有一個滿足。
          如:find /etc -size +155 -a -size -300
      • -exec/-ok:

        find /etc -name init -exec ls -l {} ;
        find /etc -name init執行完後,得到的結果立馬執行ls -l。注意ls -l {} ;之間的空格。{} \;是固定格式。
        -ok與-exec只有一個區別,也就是執行操作時,會有個提示信息。

      • -type:按類型查找。
        • f:文件。
        • d:目錄。
        • l:軟鏈接文件。
        • 如:find /etc -type f
          在/etc下查找所有文件。
      • -inum:根據i節點查找。

        i節點也就是通過ls -i 顯示的文件名前的數字。
        通過i節點刪除文件的例子

  • locate

    • 所在路徑:/usr/bin/locate
    • 執行權限:所有用戶
    • 功能描述:在文件資料庫中查找文件。
    • 語法:locate 【-i】文件名。
    • -i :不區分大小寫
    • 特點:
      • 它與windows中的everything很像。也是先建立一個對系統大部分文件建立一個索引庫,然後直接在這個索引庫中查找,纔會這麼快。
      • 如果新建一個文件,文件資料庫沒法這麼快更新,需要使用updatedb更新文件資料庫,然後查找。
      • 有許多文件,locate不會收錄進它的文件資料庫,比如/tmp中存放的臨時文件。
      • locate作爲查找不會特別靠譜,但非常快,查找常用的系統配置文件等,還是很好用的。真要完整的靠譜的查找,還是得find,不過find消耗資源太大,速度慢了點。
  • which

    • 所在路徑:/usr/bin/which
    • 執行權限:所有用戶。
    • 功能描述:搜索命令所在絕對路徑以及別名信息。
    • 語法:which 命令名
      在這裏插入圖片描述
  • whereis

    • 所在路徑:/usr/bin/whereis
    • 執行權限:所有用戶
    • 功能描述:查找命令所在絕對路徑以及配套的man文檔所在絕對路徑
    • 語法:whereis 命令名
  • grep(文件內容搜索命令)

    • 所在路徑:/bin/grep
    • 執行權限:所有用戶
    • 功能描述:在文件中搜索匹配的行,並輸出。
    • 語法:grep 【-iv】 文件
      • -i :搜索時,不區分大小寫。
      • -v:排除包含該字符串的行。
    • 例子:grep -v # /etc/init
      在/etc/init文件中查找沒有#的行,也就是非註釋行,並輸出。
      由於註釋不一定寫在行頭,也可以寫在行位,通過這種方法會過濾掉一些非註釋行。於是可以:grep -v ^# /etc/init
      其中^表示行首,整句命令的意義也就是隻排除以#開頭的行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章