Linux find 命令指南


簡介

Linux是一個強大的作業系統,它提供各種命令列工具來管理檔案或目錄。其中一個最常用的工具是find命令,它允許使用者根據各種搜尋條件搜尋任何檔案和目錄。

在本文中,您將獲得使用find命令的全面指南,包括各種演示其功能的示例。

基本用法

find命令的基本語法如下:

find [path] [expression]

path引數指定搜尋的起始目錄,expression引數指定搜尋條件。以下是可在expression引數中使用的一些常用選項:

  • -name - 搜尋具有特定名稱的檔案

  • -type - 搜尋特定型別的檔案(例如,普通檔案、目錄、符號連結)

  • -size - 搜尋特定大小的檔案(以位元組、塊或其他單位為單位)

  • -mtime - 搜尋在特定天數前最後修改的檔案

  • -user - 搜尋特定使用者擁有的檔案

  • -group - 搜尋特定組擁有的檔案

  • -perm - 搜尋具有特定許可權的檔案

讓我們看一些例子來了解如何使用這些選項。

示例 1

查詢目錄中的所有檔案 要查詢目錄及其子目錄中的所有檔案,可以使用以下命令:

find /path/to/directory -type f

這將列出指定目錄及其子目錄中的所有普通檔案。

示例 2

查詢目錄中的所有目錄 要查詢目錄及其子目錄中的所有目錄,可以使用以下命令:

find /path/to/directory -type d

這將列出指定目錄及其子目錄中的所有目錄。

示例 3

查詢具有特定名稱的檔案 要查詢具有特定名稱的所有檔案,可以使用以下命令:

find /path/to/directory -name "filename.txt"

這將搜尋指定目錄及其子目錄中所有名為“filename.txt”的檔案。

示例 4

根據大小查詢檔案 要根據檔案大小查詢檔案,可以使用以下命令:

find /path/to/directory -size +1M

這將搜尋指定目錄及其子目錄中大於 1 MB 的所有檔案。

示例 5

根據修改時間查詢檔案 要根據檔案的修改時間查詢檔案,可以使用以下命令:

find /path/to/directory -mtime -7

這將搜尋指定目錄及其子目錄中在過去 7 天內修改過的所有檔案。

示例 6

根據所有權查詢檔案 要根據檔案的所有權查詢檔案,可以使用以下命令:

find /path/to/directory -user username

這將搜尋指定目錄及其子目錄中由指定使用者擁有的所有檔案。

示例 7

根據許可權查詢檔案 要根據檔案的許可權查詢檔案,可以使用以下命令:

find /path/to/directory -perm 644

這將搜尋指定目錄及其子目錄中具有指定許可權(在本例中,所有者具有讀寫許可權,其他人只有只讀許可權)的所有檔案。

組合選項

在許多情況下,您可能希望組合多個選項以建立更復雜的搜尋條件。例如,您可能希望查詢在過去 7 天內修改過且大於 1 MB 的目錄中的所有檔案。為此,可以使用以下命令:

find /path/to/directory -type f -mtime -7 -size +1M

這將搜尋指定目錄及其子目錄中在過去 7 天內修改過且大於 1 MB 的所有普通檔案。

您還可以使用邏輯運算子(AND、OR、NOT)來組合選項。例如,如果您想查詢由使用者“username”擁有或具有 644 許可權的所有檔案,可以使用以下命令:

find /path/to/directory \( -user username -o -perm 644 \)

請注意,括號和反斜槓對於正確分組選項是必需的。

使用 -exec 選項

find 命令還提供一個 -exec 選項,允許您對找到的檔案執行操作。例如,您可能希望刪除目錄中大於 1 MB 的所有檔案。為此,可以使用以下命令:

find /path/to/directory -type f -size +1M -exec rm {} \;

這將查詢指定目錄及其子目錄中大於 1 MB 的所有普通檔案,然後對每個檔案執行 rm 命令。

請注意,{} 符號是每個找到檔案的名稱的佔位符,\; 符號表示要執行的命令的結尾。

使用 -iname 選項

預設情況下,find 命令在搜尋檔名時區分大小寫。但是,您可以使用 -iname 選項代替 -name 來執行不區分大小寫的搜尋。例如,如果您想查詢目錄中所有副檔名為 .txt 的檔案(不區分大小寫),可以使用以下命令:

find /path/to/directory -type f -iname "*.txt"

這將查詢指定目錄及其子目錄中副檔名為 .txt 的所有普通檔案(不區分大小寫)。

使用 -delete 選項

如果您想在不使用 -exec 選項的情況下刪除 find 命令找到的檔案,可以使用 -delete 選項。例如,如果您想刪除目錄中小於 1 KB 的所有檔案,可以使用以下命令:

find /path/to/directory -type f -size -1k -delete

這將查詢指定目錄及其子目錄中小於 1 KB 的所有普通檔案,然後刪除它們。

請注意,-delete 選項等效於使用 -exec rm {} \; 選項。

使用 -maxdepth 選項

預設情況下,find 命令搜尋指定目錄及其所有子目錄中的檔案和目錄。但是,您可以使用 -maxdepth 選項來限制搜尋的深度。例如,如果您想查詢目錄中的所有檔案,但只搜尋頂級目錄(而不是其子目錄),可以使用以下命令:

find /path/to/directory -maxdepth 1 -type f

這將查詢指定目錄中的所有普通檔案,但不會搜尋其子目錄。

結論

find 命令是用於在 Linux 中搜索檔案和目錄的強大而通用的工具。透過組合各種選項和邏輯運算子,您可以建立滿足您特定需求的複雜搜尋條件。此外,-exec 選項允許您對找到的檔案執行操作,使 find 命令更加有用。透過本指南中提供的示例,您應該能夠開始使用 find 命令更有效地管理您的檔案和目錄。

更新於:2023年3月3日

瀏覽量:265

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.