如何在 Ubuntu 22.04 或 20.04 終端中搜索文件
在 Ubuntu 命令終端中查找和查找文件的各種方法及其命令示例。
如果您在 Ubuntu 的圖形桌面上,則使用其文件管理器查找文件並不是一項困難的任務,但是如何在僅支持 CLI 的命令行伺服器上執行相同的操作呢?為此,Ubuntu 提供了一個內置的命令行工具「find」,除此之外還有其他開源工具,例如 Locate,在這裡我們也會討論。這些類似命令的工具允許用戶高效地搜索文件。我們可以使用它們根據某些標準(如名稱或文件擴展名)搜索特定文件。
1:使用「find」命令搜索文件
默認情況下,所有 Ubuntu Linux 系統都可以使用「find」命令直接在終端中搜索文件。我們甚至可以定義不同的標準,例如名稱、類型、大小和修改時間。
要使用它,請切換到要搜索的文件所在的目錄,或者在命令中聲明要搜索「find」命令的路徑。
例如:
在當前目錄中搜索
find -name your-file-name
而要在不切換到任何文件夾的情況下搜索,我們必須在命令中聲明文件所在的目錄路徑。
語法:
find /path/to/search -name "your-filename"
將「/path/to/search」替換為您要開始搜索的目錄,「your-filename」替換為您要搜索的文件的名稱、模式或擴展名。
例如,如果要在終端中搜索文件,例如當前目錄及其子目錄中的「example.txt」,請使用:
find -name "example.txt"
而如果您不知道確切的文件名,但知道它正在使用的擴展名,則可以使用通配符列出所有這些文件:
示例:它將列出您正在搜索的具有.txt 擴展名的目錄中的所有文件。
find -name "*.txt"
2:使用「find」命令及其附加選項
為了更好地使用「find」命令,我們可以使用附加選項來精細化 Ubuntu 終端中的搜索結果。以下是一些常用的選項:
將/path/to/search替換為文件所在的目錄路徑,或者如果您在文件可用的同一目錄中,則將其刪除。
按文件類型搜索:
find /path/to/search -type file_type
將/path/to/search替換為想要開始搜索的目錄,file_type可以是以下之一:
f:常規文件 d:目錄 l:符號鏈接 b:塊設備 c:字元設備 s:套接字 p:命名管道(FIFO)
示例:
搜索常規文件:
要在當前目錄及其子目錄中搜索常規文件(排除目錄、符號鏈接等),請使用以下命令:
find -type f
搜索目錄:
如果您只想在當前位置查找目錄,則可以使用以下命令:
find -type d
搜索符號鏈接:
要在特定目錄中搜索符號鏈接,請使用以下命令:
find /usr/local -type l
此命令將在/usr/local目錄中搜索符號鏈接。
搜索塊設備:
如果要查找塊設備(例如硬碟或分區),可以使用以下命令:
find /dev -type b
此命令將在/dev目錄中搜索塊設備。
搜索字元設備:
如果要查找字元設備(例如印表機或串列埠),可以使用以下命令:
find /dev -type c
此命令將在/dev目錄中搜索字元設備。
搜索套接字:
如果要查找套接字文件,則可以使用以下命令:
find / -type s
此命令將在根目錄中搜索套接字文件。
搜索命名管道(FIFO):
如果要查找命名管道或 FIFO,則可以使用以下命令:
find / -type p
此命令將在根目錄中搜索命名管道或 FIFO。
按文件大小搜索:
我們可以使用以下選項按照文件大小搜索文件
find /path/to/search -size [+-]size[ckMeg]
將/path/to/search替換為要在其中搜索文件的目錄路徑,「**size**」是要搜索的文件的大小(以位元組為單位),而「[+-]」可以是以下之一:
+:大於指定大小 -:小於指定大小
「ckMeg」是可選的後綴,用於指定大小的單位。例如:
c:位元組 k:千位元組(KB) M:兆位元組(MB) G:千兆位元組(GB)
示例:
以下是按文件大小搜索的示例命令。
搜索大於指定大小的文件:
要在當前目錄及其子目錄中搜索大於 100MB 的文件,請使用以下命令:
find -size +100M
搜索小於指定大小的文件:
要在當前目錄及其子目錄中搜索小於 100MB 的文件,請使用以下命令:
find -size -100M
搜索指定大小的文件:
要在當前目錄及其子目錄中搜索大小為 100MB 的文件,請使用以下命令:
find -size 100M
按時間搜索(修改時間、訪問時間、更改時間、狀態時間):
除了按文件名和大小搜索文件之外,我們還可以按文件的時間戳搜索文件。有以下四個時間戳:
- mtime:文件的修改時間戳(文件內容修改)
- atime:文件的訪問時間戳(最後一次訪問文件的時間)
- ctime:文件的更改時間戳(文件內容或元數據的修改)
- crtime:文件的狀態時間戳(文件創建時間)
使用以下命令按時間搜索文件:
find /path/to/search -time [+-]n[unit]
將/path/to/search替換為要在其中搜索文件的目錄路徑,「**n**」是要搜索的時間量,「[+-]」可以是以下之一:
+:更大的時間 -:更小的時間
「unit」是可選的後綴,用於指定時間單位。以下是可用的時間單位:
s:秒 m:分鐘 h:小時 d:天
示例:
以下是按時間搜索的示例命令。
搜索在最近 7 天內修改的文件:
要在當前目錄及其子目錄中搜索最近 7 天內修改的文件,請使用以下命令:
find -type f -mtime -7
搜索在最近 24 小時內訪問的文件:
要在當前目錄及其子目錄中搜索最近 24 小時內訪問的文件,請使用以下命令:
find -type f -atime -1
搜索在最近 30 分鐘被更改的文件:
要在當前目錄及其子目錄中搜索最近 30 分鐘內更改的文件,請使用以下命令:
find -type f -cmin -30
搜索在最近 1 小時內創建的文件:
要在當前目錄及其子目錄中搜索最近 1 小時內創建的文件,請使用以下命令:
find -type f -crtime -1h
3:使用「locate」命令搜索文件
「locate」命令是另一個用於在 Ubuntu 終端中搜索文件的工具。它比「find」命令更快,因為它會在系統上創建一個索引資料庫,並且在搜索時只需要查找該資料庫即可。但是,這也意味著它可能會錯過最近創建或修改的文件,因為資料庫可能不是最新的。
要使用「locate」命令搜索文件,請使用以下命令:
locate filename
其中「filename」是您要搜索的文件名稱、模式或擴展名。
示例:
以下是使用「locate」命令搜索文件的示例命令。
搜索文件:
要在系統中搜索文件,請使用以下命令:
locate example.txt
搜索具有指定擴展名的文件:
如果要列出具有指定擴展名的所有文件,請使用以下命令:
locate "*.txt"
請注意,使用通配符時需要將文件名放在引號中。
結論
無論您是在命令行伺服器上工作還是在 Ubuntu 桌面上工作,使用「find」和「locate」命令搜索文件都是非常有用的技能。它們可以幫助您快速找到特定文件,並在需要時對其進行操作。在學習這些命令時,請記住使用選項可以幫助您更好地控制搜索結果。