在Linux上使用find -exec命令選項


介紹

Linux 中的find命令是一個用途廣泛且功能強大的工具,用於在檔案系統中查詢檔案和目錄。“-exec”選項是find命令的一個有用補充,它允許您對find命令找到的任何檔案或目錄執行命令。這對於查詢特定檔案然後對其執行操作(例如刪除、移動或編輯)非常有用。在本文中,我們將討論find -exec命令選項的語法和用法,並提供一些使用示例。

語法和用法

使用-exec選項的查詢命令的基本語法如下:

$ find [path] [options] -exec [command] {} \;
  • 路徑是您要在檔案系統中查詢的位置。它可以是特定目錄或根目錄(/)。

  • 選項是您要與查詢命令一起使用的任何其他選項。這些選項可能包括查詢具有特定許可權或所有權的檔案、最後修改時間等等。

  • 命令是您要在找到的每個檔案或目錄上執行的命令。

  • {}是找到的檔案或目錄的佔位符。

  • \;用於終止“-exec”選項。

需要注意的是,-exec選項必須以分號 (;) 結尾,並且此分號必須以反斜槓 (\) 開頭,以確保shell正確解釋命令。

示例

為了說明find -exec命令選項的用法,讓我們來看一些示例。

示例 1

查詢主目錄中的所有“.txt”檔案並顯示其名稱

$ find ~ -name "*.txt" -exec ls -l {} \;

此命令將搜尋主目錄中的所有“.txt”檔案,並對找到的每個檔案執行“ls -l”命令,並將檔案的路徑作為引數。“ls -l”命令將顯示檔名、許可權、所有者、大小和其他資訊。

示例 2

查詢主目錄中所有對所有者具有執行許可權的檔案並將其刪除

$ find ~ -perm -u+x -exec rm {} \;

此命令將搜尋主目錄中所有對所有者具有執行許可權的檔案,並對找到的每個檔案執行rm命令,並將檔案的路徑作為引數。rm命令將刪除檔案。

示例 3

查詢主目錄中最後修改時間超過30天的所有檔案並將其移動到備份目錄

$ find ~ -mtime +30 -exec mv {} /backup/ \;

此命令將搜尋主目錄中最後修改時間超過30天的所有檔案,並對找到的每個檔案執行mv命令,並將檔案的路徑作為引數。mv命令將檔案移動到“/backup/”目錄。

注意 - 以上命令的輸出特定於執行命令的使用者的主目錄中存在的檔案和目錄。對於不同的使用者和不同的系統,輸出將有所不同。

高階用法

“-exec”選項還可以與其他選項結合使用以執行更復雜的動作。

  • 使用-ok代替-exec將在對每個檔案執行命令之前提示使用者確認。這對於具有破壞性效果的命令(例如第二個示例中的rm命令)非常有用。

  • -exec選項還可以與“-or”選項結合使用,允許對找到的檔案執行各種命令。例如,您可以使用find命令查詢所有“.txt”檔案,然後使用“-exec”選項對這些檔案執行ls“-l”和cat命令。

    $ find ~ -name "*.txt" -exec ls -l {} \; -or -exec cat {} \;
    
  • “-print”選項可以在執行“-exec”選項之前列印每個找到檔案的路徑。

    $ find ~ -name "*.txt" -print -exec ls -l {} \;
    

結論

find -exec命令選項是用於在檔案系統中搜索檔案和目錄並對其執行操作的強大工具。它可以用於諸如搜尋特定檔案然後刪除、移動或修改它們之類的任務。本文中提供的示例應該可以讓您很好地理解如何使用“find -exec”命令選項以及可用的不同選項。透過實踐和試驗,您可以使用此命令選項來自動化重複性任務並簡化您的工作流程。

更新於:2023年1月20日

9K+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

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