linux搜索文件命令find linux搜索文件命令grep



文章插圖
linux搜索文件命令find linux搜索文件命令grep

文章插圖
經過 Linux 系統不斷探索,不斷發展到現代文明,我們都必須堅信:一個典型的 Linux 系統是包含很多文件的,即是由文件組成的!那么新的問題就會涌現到我們的腦海中– “我們如何查找呢?” 。當然,發展到現在的Linux 文件系統已經被良好地組織起來了 。不過呢,海量的文件往往會引起一些可怕的問題 。
作為一名LINUX 運維人員,每天面對著這些 linux 系統實際生產環境,必須有過硬的技術能力和良好的心理素質才能勝任 。在今天這篇文章中,我們將介紹2 個用來查找文件的工具 。
命令locate , updatedb , find 和 xargs 都是 GNU 項目 findutils 軟件包的一部分 。這個GUN 項目提供了大量的在線文檔,這些文檔相當出色,如果你在高安全性的環境中使用這些程序,你應該讀讀相關文檔 。當然,在編寫這篇文章過程中我還參考了 這本書,內容很貼近實踐,很有理論指導實踐價值的一本書籍 。
GNU 查找實用程序是 GNU 操作系統的基本目錄搜索實用程序 。這些程序通常與其他程序結合使用,以便向其他命令提供模塊化和強大的目錄搜索和文件定位功能 。
此包隨附的工具包括:
Find — search for files in a directory hierarchy
// 在目錄層次結構中搜索文件
locate –list files in databases that match a pattern
// 列出與模式匹配的數據庫中的文件
updatedb — update a file name database
// 更新文件名數據庫
xargs — build and execute command lines from standard input
// 從標準輸入生成和執行命令行
find 程序搜索目錄樹以查找文件或文件組 。它遍歷目錄樹并報告與用戶規范匹配的文件的所有出現 。find 程序包括非常強大的搜索功能 。
locate 程序掃描一個或多個文件名數據庫并顯示任何匹配項 。如果文件存在于上一個文件名數據庫更新期間,這可用作非??焖俚牟檎颐?。
updatedb 程序更新定位程序使用的文件名數據庫 。文件名數據庫包含上次更新數據庫時在特定目錄樹中的文件列表 。這通常每晚由 cron 系統守護程序運行 。
xargs 程序通過收集它在標準輸入上讀取的參數來生成和執行命令行 。大多數情況下,這些參數是由 find 生成的文件名列表 。
下面是一個示例操作,使子目錄docs 中的所有類HTML 文件由所有使用 find 和 xargs 的可讀性 。這是一個典型的示例,說明 Find 和 xarg 如何與其他實用程序一起使用,以提供強大的目錄遍歷功能 。
[[email protected] ~]$ find docs -name ‘*.html’ -print0 | xargs -0 chmod a+r
查找文件的簡單方法– locate
Locate 命令會執行一次快速的路徑名數據庫搜索程序,同時輸出每個與給定子字符串相匹配的路徑名稱 。例如:我們想要找到“test/” 目錄下所有以“zip” 開頭的程序名稱 。接下來,我們可以以這種方式使用 locate 命令,用來找到我們想要的文件:
[[email protected] ~]$ locate test/zip
locate 命令將會搜索它的路徑名數據庫,輸出任一個包含字符串“tset/zip” 的路徑名:
114/usr/test/zip
/usr/test/zipinfo
/usr/test/zipgrep
復雜點的話, locate 可以結合其它工具,比如說 grep 命令,來設計更加有趣的搜索方式:
[[email protected] ~]$ locate zip | grep test
/test/bunzip2
/test/bzip2
/test/gzip
/usr/test/unzip
/usr/test/unzipsfx
/usr/test/zip
/usr/test/zipgrep
/usr/test/zipinfo
查找文件的復雜方式–find
locate 程序有一個缺陷是只能依據文件名來查找文件,而 find 程序支持基于各種各樣的屬性搜索一個給定目錄或者它的子目錄,來執行查找文件程序 。本人建議要花費大量的時間去學習 find 命令,因為它有許多有趣的特性,很有意思的 。
比較簡單的應用方式中, find 命令可接收一個或多個目錄名稱來執行搜索程序 。例如,輸出我們的家目錄的路徑名列表:
[[email protected] ~]$ find ~
對于一個比較活躍的用戶帳號,這條命令將會產生一張很大的列表 。避免查看不方便的現象,我們可以把這個列表通過管道符號輸出到其它的程序中 。例如:使用 wc 程序來計算出文件的數量:
[Centos@ ~]$ find ~ | wc -l
10029
通過find 命令用來找到符合特定標準的文件,這就是它的魅力所在 。
個人總結了些find 命令選項,這些選項被用作配合find 命令限定一定的搜索范圍 。每當構建 find 表達式的時候,這些選型可能會被其它的測試條件和行為包含或者覆蓋 。常見選項的列表:
選型描述-depth指示 find 程序先處理目錄中的文件,再處理目錄自身 。當指定-delete 行為時,會自動應用這個選項 。-maxdepth levels當執行測試條件和行為的時候,設置 find 程序陷入目錄樹的最大級別數-mindepth levels在應用測試條件和行為之前,設置 find 程序陷入目錄數的最小級別數 。-mount指示 find 程序不要搜索掛載到其它文件系統上的目錄 。-noleaf指示 find 程序不要基于自己在搜索 Unix 的文件系統的假設,來優化它的搜索 。在搜索 DOS/Windows 文件系統和CD/ROMS 的時候,我們需要這個選項
【linux搜索文件命令find linux搜索文件命令grep】來源:ITPUB博客