Linux常用命令之文件搜索命令

一、最強大的搜索命令:find

首先進行一點說明,find命令是我們在Linux系統(tǒng)中用來進行文件搜索用的最多的命令,功能特別強大。但是我們要說的是盡量少用find命令去執(zhí)行搜索任務,就算要搜索我們也應該盡量的縮小范圍,也不要在服務器使用高峰期進行文件搜索,因為搜索也是很占系統(tǒng)資源的。這就需要我們在進行Linux文件整理的時候,盡量規(guī)范化,什么文件放在什么目錄下都要有比較好的約定。

find這個命令如果要完全講清楚,恐怕得花費很長的時間,而且很多用法我們幾乎用不到,所以這里我就不一一介紹此命令的每一種用法了,我會詳細介紹幾種最常用的用法,大家只需要記住這幾種就完全夠我們日常使用了。

  1. 命令名稱:find
  2. 英文原意:
  3. 命令所在路徑:/usr/bin/find
  4. 執(zhí)行權限:所有用戶
  5. 功能描述:進行各種花式文件搜索
  6. 語法:find【搜索范圍】【匹配條件】

注意:Linux搜索和windows是有明顯區(qū)別的,Linux嚴格區(qū)分文件大小寫。

1、根據文件或目錄名稱搜索

find 【搜索目錄】【-name或者-iname】【搜索字符】:-name和-iname的區(qū)別一個區(qū)分大小寫,一個不區(qū)分大小寫

  1. find /etc -name init (精準搜索,名字必須為 init 才能搜索的到)
  2. find /etc -iname init (精準搜索,名字必須為 init或者有字母大寫也能搜索的到)
  3. find /etc -name *init (模糊搜索,以 init 結尾的文件或目錄名)
  4. find /etc -name init??? (模糊搜索,? 表示單個字符,即搜索到 init___)


    1
2、根據文件大小搜索

比如:在根目錄下查找大于 100M 的文件

find / -size +204800
這里 +n 表示大于,-n 表示小于,n 表示等于
1 數(shù)據塊 == 512 字節(jié) ==0.5KB,也就是1KB等于2數(shù)據塊
100MB == 102400KB==204800數(shù)據塊


2
3、根據所有者和所屬組搜索
  1. 在home目錄下查詢所屬組為 root 的文件
    find /home -group root
  2. 在home目錄下查詢所有者為 root 的文件
    find /home -user root


    3
4、根據時間屬性搜索

find 【路徑】【選項】【時間】
選項有下面三種:
-amin 訪問時間
-cmin 文件屬性被更改
-mmin 文件內容被修改
時間:+n,-n,n分別表示超過n分鐘,n分鐘以內和n分鐘
范例:在 /etc 目錄下查找5 分鐘內被修改過屬性的文件和目錄
find /etc -cmin -5

5、根據文件類型或i節(jié)點搜索
  • -type 根據文件類型查找:f表示文件,d表示目錄,l表示軟鏈接
    范例:查找 /home 目錄下文件類型是目錄的 find /home -type l
  • -inum 根據i節(jié)點查找
    范例:查找 /tmp 目錄下i節(jié)點為400342的文件或目錄 find /tmp -inum 400342


    4
6、組合條件搜索

這里有兩個參數(shù):

  1. -a 表示兩個條件同時滿足(and)
  2. -o 表示兩個條件滿足任意一個即可(or)
    范例:查找/etc目錄下大于80MB同時小于100MB的文件
    find /etc -size +163840 -a -size -204800

二、在文件資料庫中查找文件命令:locate

  1. 命令名稱:locate
  2. 英文原意:
  3. 命令所在路徑:/usr/bin/locate
  4. 執(zhí)行權限:所有用戶
  5. 功能描述:在文件資料庫中查找文件
  6. 語法:locate【文件名】

-i 不區(qū)分大小寫
注意:這里和 find 命令是有區(qū)別的,find是全盤檢索,而locate 是在文件資料庫中進行搜索。所以locate命令的執(zhí)行要比find命令執(zhí)行速度快很多。但是這里有個問題,文件資料庫是需要不斷更新的。我們新創(chuàng)建的文件如果不更新 文件資料庫,使用 locate 是查找不到的。
  updatedb 手動更新資料庫,但是對于/tmp目錄下的新建文件,是更新不到文件資料庫的,因為/tmp目錄不屬于文件資料庫的收錄范圍。

5

3、搜索命令所在的目錄及別名信息:which

  1. 命令名稱:which
  2. 英文原意:
  3. 命令所在路徑:/usr/bin/which
  4. 執(zhí)行權限:所有用戶
  5. 功能描述:搜索命令所在的目錄及別名信息
  6. 語法:which【命令】
    范例:查詢 ls 命令所在目錄以及別名信息


    6

4、搜索命令所在的目錄及幫助文檔路徑:whereis

  1. 命令名稱:whereis
  2. 英文原意:
  3. 命令所在路徑:/usr/bin/whereis
  4. 執(zhí)行權限:所有用戶
  5. 功能描述:搜索命令所在的目錄及幫助文檔路徑
  6. 語法:whereis【命令】
    范例:查詢 ls 命令所在目錄以及幫助文檔路徑


    7

5、在文件中搜尋字符串匹配的行并輸出:grep

  1. 命令名稱:grep
  2. 英文原意:
  3. 命令所在路徑:/bin/grep
  4. 執(zhí)行權限:所有用戶
  5. 功能描述:在文件中搜尋字符串匹配的行并輸出
  6. 語法:grep -iv 【指定字符串】【文件】

-i 不區(qū)分大小寫
-v 排除指定字符串
范例:查找 /root/install.log 文件中包含 mysql 字符串的行,并輸出
grep mysql /root/install.log


8
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容