使用計算機時的一個典型問題是找不到保存在某處的文件。 許多 GUI 程序允許您在 Linux 下工作時搜索文件,而與發行版無關。 但是,在某些情況下,您只能訪問命令行終端,尤其是在您管理服務器或使用 SSH 訪問系統時。 如果找不到文件,則必須使用 Linux 上的命令行程序來查找它們。
本教程將向您展示如何使用終端(Ubuntu 操作系統中的命令行程序)來查找文件。 在 shell 上,有三種眾所周知的文件搜索方式:
- 使用查找文件 尋找 命令
- 使用 定位 查找文件的命令
- 使用 格雷普 在文件中搜索的命令
Find 和 Locate 命令用於搜索系統中的文件,而 grep 用於根據文件包含的文本搜索文件。 Find 是一種較慢的方法,但包含多個搜索條件,而 Locate 不包含盡可能多的條件,但比 Find 快得多。
讓我們開始程序。 我們將使用 Ubuntu 20.04 LTS 用於描述本文中提到的過程。
方法一:使用查找命令
Find 是一個高度靈活的命令,用於根據各種條件搜索文件。 在搜索您不記得文件名的文件時,它是一個非常有用的工具。 使用 Find 命令,您可以根據文件和文件夾名稱、創建日期、修改日期和權限進行搜索。 您可以將這些多個條件組合在一個 Find 命令中。 這是一個非常強大但速度較慢的搜索工具。
命令的一般語法是:
$ find /path/to/file/ -iname 文件名
搜索特定目錄中的文件
您可以使用 Find 命令搜索特定目錄中的所有文件。 一般語法是:
$ 查找/路徑/到/文件/
例如,要查找目錄下的所有文件 /home/tin/下載/ 目錄,按啟動終端 Ctrl+Alt+T 然後在終端中運行以下命令:
$ find /home/tin/下載/
搜索當前目錄下的文件
要搜索當前目錄中的文件,請使用
$ 查找。
要在當前目錄下搜索名為“softwares”的文件,請在終端中使用以下命令:
$ 查找。 -iname 軟件
使用通配符搜索
您還可以使用通配符查找與查詢匹配的文件。 一般語法是:
$ find /path/to/file/ -iname 文件名*
例如,要搜索以單詞“cent”開頭的文件,請在終端中運行以下命令:
$ find /home/tin/ -iname cent*
搜索空文件
您還可以使用 Find 命令搜索空文件。 一般語法是:
$ find /path/to/file/ -iname -empty
例如在下面找到空文件 /家/錫 目錄,在終端中運行以下命令:
$ find /home/tin/ -empty
根據日期和時間搜索
使用 Find 命令,您還可以根據文件被訪問或修改的時間來搜索文件。 您可以使用多種時間來搜索文件:
- mtime(修改時間): 上次修改文件內容的時間。
- atime(訪問時間): 上次訪問文件的時間。
- ctime(更改時間): 上次修改文件屬性的時間。
例如,要在當前目錄中搜索不到 2 天前修改過的文件,請在終端中運行以下命令:
$ 查找。 -mtime -2
要搜索不到 2 天前訪問過的文件,請在終端中運行以下命令:
$ 查找。 –時間 -2
要搜索不到 2 天前更改的文件,請在終端中運行以下命令:
$ 查找。 –ctime -2
根據文件大小搜索
例如,要搜索大小大於 5MB 的文件,我們可以在終端中使用以下命令:
$ 查找。 –大小+5M
根據文件權限搜索
它用於查找具有特定權限的文件。 一般語法是:
$ find /path/to/file/ -type -perm 模式
在哪裡:
類型 參數包括 d 或者 F 用於指定文件類型的值。 d 對於目錄和 F 僅用於文件。
模式 可以是數字權限(例如 777、655.. 等)或符號權限(例如 u=x、a=r+x)。
例如,要搜索權限為 644 的文件,我們可以在終端中使用以下命令:
$ 查找。 – 類型 f –燙髮 644
方法二:使用定位命令
還有另一個命令 Locate 可用於在 Linux 中搜索文件。 它沒有 Find 實用程序提供的那麼多搜索條件,但它比 Find 實用程序更好更快。 背後的原因是實際在您的系統中運行的後台進程,並在其自己的數據庫中搜索和存儲新文件。 與 Find 命令不同,它不會在本地硬盤上搜索文件和目錄,而是在自己的數據庫中搜索它們。 其數據庫應定期更新,以便搜索實用程序正常工作。
安裝定位
Linux 操作系統中默認不安裝 Locate。 您將需要手動安裝它。 按 Ctrl+Alt+T 啟動終端,然後鍵入以下命令 sudo 安裝定位實用程序:
$ sudo apt-get 安裝定位
安裝完成後,您可以立即使用定位實用程序。
命令的一般語法是:
$ locate –i 文件名
其中 -i 用於忽略大小寫區別。
搜索文件
例如,要搜索文件名“centos”,請在終端中使用以下命令:
$ locate –i centos
它將搜索文件名中包含字符串“centos”的所有文件。
搜索多個文件
您還可以同時搜索多個文件名。 例如,在終端中使用以下命令搜索兩個文件“sdn.txt” 和 ”centos”:
$ locate –i sdn.txt centos
使用通配符搜索
您還可以使用通配符查找與查詢匹配的文件。 例如,要搜索所有以“.iso”結尾的文件,請在終端中使用以下命令:
$ locate –i *.iso
更新定位數據庫
Locate 命令依賴於它的數據庫來工作,所以它需要定期更新。 在終端中運行以下命令以更新 Locate 實用程序數據庫:
$ sudo 更新數據庫
方法三:使用 Grep 命令
儘管 Grep 不是用於直接搜索系統中的文件,而是用於搜索文本。 但是,您可以使用它來顯示包含與您的搜索查詢匹配的特定字符串的文件的名稱。 要搜索字符串,您必須將其括在雙引號中。
命令的一般語法是:
$ grep [options] [pattern] [/path/to/file]
在哪裡 [options] 參數包含用於控制搜索和 [pattern] 包含我們要搜索的字符串。
如果您正在查找包含某個單詞的文件,並且您懷疑該單詞可能位於您的任何特定目錄中,則可以在終端中使用上述命令語法進行搜索。
例如,要搜索包含單詞“tintin”的文件,我們認為該文件可能在我們的 下載 文件夾,我們可以使用以下命令來定位該文件。
$ grep -r –i “tintin” /home/tin/Downloads
在哪裡
-i 用於忽略大小寫區別
-r 用於遞歸搜索指定目錄
搜索多個詞
您還可以同時搜索多個字符串。 您必須使用反斜杠“”和管道符號“|” 字符串中的字符。
例如要搜索兩個字符串“tintin”和“ping”,我們可以在終端中使用以下命令:
$ grep –r –I “tintin|ping” /home/tin/Downloads
所以,這就是如何在 Ubuntu 中使用命令行搜索文件的簡要概述。 在本文中,我們看到了三種有用的命令行方法來搜索文件。 您可以根據搜索速度和條件選擇這些方法中的任何一種。