Linux 文件搜索命令:find、which、whereis 和 locate

来源:https://www.cnblogs.com/tongye/archive/2018/11/09/9915380.html
-Advertisement-
Play Games

Linux 提供了許多用於文件搜索的命令,這些命令都很強大,但是也有一些不同之處,這裡分別介紹一下。 一、find 命令 find 是最常見和最強大的一個文件搜索命令。使用 find 命令可以在指定目錄中搜索指定的文件。語法如下: 其中,目錄是 find 命令將要去搜索的目錄,包括該目錄及其子目錄, ...


  Linux 提供了許多用於文件搜索的命令,這些命令都很強大,但是也有一些不同之處,這裡分別介紹一下。

一、find 命令

  find 是最常見和最強大的一個文件搜索命令。使用 find 命令可以在指定目錄中搜索指定的文件。語法如下:

find [目錄] [選項] [動作]

  其中,目錄是 find 命令將要去搜索的目錄,包括該目錄及其子目錄,預設情況下是當前目錄及其子目錄;選項指定以何種方式查找文件;動作指定要查找哪些文件,動作可以是一個字元串,也可以是一個正則表達式。

  由於 find 命令是對整個磁碟進行搜索,因此搜索速度會比較慢,但是如果有這個文件的話,一定可以找到。為了加快 find 查找的速度,在使用 find 命令時,最好不要直接在根目錄下進行查找,搜索目錄越小越好,搜索條件越精確越好。

find 命令常見選項

1)-name 、-iname 選項:根據指定的文件名查找文件,其中使用 -iname 可以忽略大小寫;

find [目錄] -name [文件名]

  需要註意的是,find 命令是精準搜索,即精準的搜索指定目錄下與文件名完全匹配的文件,如果需要模糊搜索的話,可以使用正則表達式。簡單舉個例子:

 

2)-size 選項:根據指定的文件大小查找文件;

  -size 選項後面的動作是指定的文件大小,可以在動作前加上 + / - 符號來表示查找大於 / 小於指定大小的文件,不加則表示查找等於該指定大小的文件。查找文件的預設單位是塊( 1 塊 = 512 位元組 = 0.5KB),可以在數字後面添加指定字元來改變單位,常用的單位有 c (位元組)、k(k位元組)、M(M位元組)、G(G位元組)。

find [目錄] -size [+/-]unitsize

  以下麵這一個目錄中的文件為例,演示一下 -size 選項的用法:

  需要註意的是,預設單位為塊,一個文件塊是 512 位元組,當一個文件小於 512 位元組時,也是會被當成一個塊的大小來對待的。

3)-user 選項:搜索指定所有者的文件;

4)-group 選項:搜索指定組的所有文件;

5)-amin 選項:查找指定時間內被訪問的文件,單位是分鐘;

find /etc -amin -5    // 查找 /etc 目錄下5分鐘內被訪問過的文件
find /etc -amin +5    // 查找 /etc 目錄下5分鐘之前被訪問過的文件

  在這個例子中,我首先使用 vim 打開了 add.c 文件,然後使用 find 命令的 -amin 選項搜索被訪問的文件。

6)-cmin 選項:查找指定時間內文件屬性被改變了的文件,單位是分鐘;

  用法與 -amin 選項一樣,但是功能不同。

7)-mmin 選項:查找指定時間內文件內容被改變了的文件,單位是分鐘;

  用法與 -mmin 選項一樣,但是功能不同。

8)-a 選項:and,用於連接兩個條件,表示要兩個條件同時滿足;

  還是以上面的 HelloWorld 目錄為例,這裡使用 -a 選項查找該目錄下文件大小在 200 位元組到 500 位元組之間的文件。

9)-o 選項:or,用於連接兩個條件,表示兩個條件滿足一個即可;

10)-type 選項:根據文件類型查找,後面可以接 f、d、l,分別代表文件類型、目錄類型和軟鏈接文件。

find /etc -type f

 

二、which 命令

  which 命令可以用於搜索一個命令所在的目錄及其別名信息。語法如下:

which 命令名

 

三、whereis 命令

  whereis 命令可以用來搜索一個命令所在的目錄以及其 man 手冊等相關文件的路徑。

 

四、locate 命令

  locate 命令與 find -name 命令功能一樣,可以用來查找文件或目錄 ,但是要比 find 命令查找起來速度快很多。這是因為 locate 命令並不搜索具體的目錄,而是搜索一個資料庫 /var/lib/mlocate/mlocate.db。這個資料庫包含本地絕大多數文件的信息(不包括 /tmp 目錄下的文件)。Linux 系統會自動創建這個資料庫,並且每天都會自動更新一次。locate 命令的語法如下:

locate 文件名

  需要註意的是,locate 命令所搜索的資料庫不是即時更新的。因此,如果你新創建了一個文件,想要立即使用 locate 搜索這個文件,是搜索不到的;同樣,如果你刪除了一個文件,然後立即使用 locate 命令,仍然可以搜索到這個文件。因此,在使用 locate 命令之前,我們希望資料庫是更新了的,可以使用 updatedb 命令手動更新資料庫,然後再使用 locate 命令,就不會出現上述問題了。此外, /tmp 目錄不在 mlocate.db 的查找範圍內,因此如果你在 /tmp 目錄下新建了一個文件,然後更新資料庫,再使用 locate 命令查找,也是查找不到的。

  使用 -i 選項可以忽略大小寫。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.使用 Office COM組件的Microsoft.Office.Interop.word.dll庫 該方法需要在電腦上安裝Office軟體,並且需要Office支持轉換為PDF格式,如果不支持,從官網下載一個SaveAsPDFandXPS.exe插件 Interop.word程式集可以通過Nu ...
  • 本類思想:高性能計數器以微妙級累加數值,逢十進位。如果動態的單看數值最後一個數字,一定是在0-9之間不斷旋轉,就像一個滾動的俄羅斯輪盤,暫停時一定指向其中某一位數字並且指向哪個數字是不可預測的,當暫停次數足夠多時,分佈在各個數值上的概率無限接近。 寫作時間:2018-11-07 本文只代表本人的見解 ...
  • 用Aspose組件的優點是操作Word文檔不需要安裝Office就可以實現。 首先需要引用Aspose.Words.dll,鏈接地址:鏈接:https://pan.baidu.com/s/1rJvjp-kMsEterYf_oud28Q 提取碼:awiw 代碼如下: ...
  • 在很早之前的隨筆裡面,已經介紹了WInform框架中工作流模塊的功能,不過由於工作流模塊中界面處理部分比較麻煩,一直沒有在Bootstrap框架中進行集成,最近由於項目的關係,花了不少精力,把工作流模塊重新梳理遷移到Bootstrap框架上,本篇隨筆主要介紹基於Metronic的Bootstrap開... ...
  • 一、CLR 線程池基礎 一般來說如果電腦的 CPU 利用率沒有 100% ,那麼說明很多進程的部分線程沒有運行。可能在等待 文件/網路/資料庫等設備讀取或者寫入數據,又可能是等待按鍵、滑鼠移動等事件。 執行 I/O 限制的操作時,操作系統通過設備驅動程式通知硬體幹活,而 CPU 處於一種空閑狀態。 ...
  • head 與 tail 就像它的名字一樣的淺顯易懂,它是用來顯示開頭或結尾某個數量的文字區塊,head 用來顯示檔案的開頭至標準輸出中,而 tail 想當然爾就是看檔案的結尾。 一.命令格式: head [參數]... [文件]... 二.命令功能: head 用來顯示檔案的開頭至標準輸出中,預設h ...
  • e2image e2Image程式將位於設備上的ext2、ext3或ext4文件系統元數據保存到由圖像文件指定的文件中。通過對這些程式使用-i選項,image文件可以由dupe2fs和調試器來檢查。這可以幫助專家恢復嚴重損壞的文件系統。 如果image文件是”-“,那麼e2image的輸出將被髮送到 ...
  • rar解壓 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...