本文介紹如何在 Linux 中查找文件和目錄。 使用locate、find 和grep 命令。下面將詳細描述每個命令。
我們用了 Ubuntu 20.04 LTS 演示過程。
在 Linux 中使用 Locate 命令定位文件和目錄
當使用系統中的所有文件路徑讀取 mlocate.db 數據庫時,locate 命令提供更快的結果。
安裝位置
如果您看到以下消息,則需要安裝 locate。
要安裝的命令是:
sudo apt-get install mlocate
第一步是輸入您的密碼。輸入您的密碼,安裝將開始。
安裝後必須更新搜索數據庫。 Locate 依賴於這個數據庫,並且必須定期更新以確保效率。 更新 mlocate 數據庫需要超級用戶權限。
sudo updatedb
按文件名查找文件
要按文件名查找文件,請使用以下命令:
locate {filename}
它查找一個名為“textfile.txt”的文件,因此命令將是:
locate textfile.txt
結果將是文件所在的路徑。
忽略大小寫
默認情況下,locate 將查詢視為區分大小寫。換句話說, textfile.txt 和 TEXTFILE.TXT 指向不同的搜索結果。
如您所見,沒有找到 TEXTFILE.TXT。
您可以通過使用忽略大小寫敏感性 -一代 選項。命令是:
locate –i {file name}
如您所見,文件現在就位。
在 Linux 中使用 find 命令查找文件和目錄
Find 比 Locate 強大得多,但速度較慢。它很慢,因為它在磁盤上搜索文件。 find 的美妙之處在於它可以根據用戶組、文件被修改或訪問的時間、文件權限、日期和大小來搜索 Linux 文件和目錄。
在當前目錄中查找文件
您可以使用以下命令顯示當前目錄中具有特定名稱的所有文件:
find . -name {filename}
它將顯示當前目錄中所有名為“textfile.txt”的文件。
在您的主目錄中查找文件
要在主目錄中查找文件,請使用: /家庭. 命令如下所示:
find /home -name {filename}
您應該在主目錄中看到所有名為 Hello.txt 的文件。
忽略大小寫
默認情況下,find 將查詢視為區分大小寫。所以 hello.txt 和 Hello.txt 指的是不同的搜索結果。
如您所見,沒有找到 hello.txt。
要忽略區分大小寫,請使用以下命令:
find –iname {file name}
我找到了 hello.txt,如下所示。
使用通配符搜索
您可以使用通配符搜索具有特定條件的文件。星號 (*) 通配符來匹配字符的任何實例。
下面的示例使用以下命令:
find . –name ‘*he’
此命令將列出所有以 ‘he’ 結尾的文件名
find . –name ‘he*’
此命令將列出所有以 ‘he’ 開頭的文件名
按文件大小搜索
要按大小查找文件,請使用:
find –size {filesize} –type f
此命令搜索大小為 68 字節的文件。
要查找大於或小於特定大小的文件,請選擇+“ 還”–“我會聽從你的命令。
find –size -{filesize} –type f
以下示例查找小於 512 字節的文件。
此命令搜索大於 512 字節的文件。
根據上次修改時間查找文件
使用以下命令根據文件的最後修改時間查找文件。
find -iname "*.txt" -mtime -60
此命令查找過去 60 天內修改的文件。
找到目錄
要查找目錄,請使用以下命令:
find –name “{file name}” –type d
結果,顯示目錄的路徑。
查找只讀文件
要查找只讀文件,請使用命令
find / -perm /u=r
您可以在終端中查看所有隻讀文件。
在 Linux 中使用 grep 命令查找文件和目錄
全局正則表達式 print 或 grep 在 Linux 中用於搜索特定文件中的字符串。 當 grep 找到這些字符時,它會打印該行。命令是:
grep {string} {file name}
下面的示例在文件“textfile.txt”中搜索字符串“is”。 您應該看到包含“是”的行。
顯示行號
您可以使用以下命令打印行號以及匹配的字符串:
grep {string} {filename} –n
下面的示例打印找到字符串“is”的行號。
反向匹配
此選項允許您打印與輸入的模式不匹配的行。
grep {string} {file name} –v
以下示例打印文本文件“textfile.txt”中不包含“is”的行。
忽略大小寫
默認情況下,grep 將查詢視為區分大小寫。也就是說,is 和 IS 指的是不同的搜索結果。
如您所見,未找到“IS”。
使用以下命令,不區分大小寫。
grep {string} {file name} –i
遞歸搜索
默認情況下,Grep 無法搜索目錄。我收到以下錯誤:
您可以使用以下命令搜索目錄:
grep {string} . –R
以下示例在當前目錄中搜索字符串“some”。
本文向您展示瞭如何在 Linux 中查找、查找和 grep 文件和目錄。我還看到了一些關於如何使用它們的案例。