在 Bash 中執行 find -exec 命令
    
    
            Aashish Sunuwar
    2022年5月11日
    
    Bash
    Bash Find
    
 
本文將解釋如何使用 find 命令的 -exec 引數使用 find 命令定位檔案中的任何文字。
在 Bash 中使用 find 命令搜尋檔案
    
find 命令是在 bash 中搜尋和選擇檔案的有用工具。我們使用帶有一些表示式和動作的 find 命令。
例子:
find ./folder -name *.txt
我們使用帶有搜尋位置的 find 命令,例如 ./folder 用於 folder 目錄及其子目錄。而 -name *.txt 表示式是查詢該位置中的每個 .txt 檔案。
在 Bash 中使用 -exec 選項和 find 命令搜尋檔案
我們可以使用 -exec 操作對 find 命令使用 find 命令找到的檔案執行命令。
例子:
find ./folder -name *.txt -exec file {} +
輸出:
./folder/hello.txt: ASCII text, with no line terminators
-exec 操作執行 file 命令,顯示 find 命令返回的檔案型別。
在 Bash 中使用 find -exec 命令搜尋特定文字
    
我們可以使用帶有 -exec 選項的 find 命令來查詢包含我們要搜尋的文字的檔案。
主要概念是使用 find 命令獲取工作目錄中的每個檔案,並執行 grep 命令查詢每個檔案中的文字。
例子:
# !/bin/bash
find . -exec grep linux {} \;
以下命令將返回找到指定 text 的行。
輸出:
find . -exec grep linux {} \;
find . -exec grep linux {} +
title = "Unzip .gz file in linux"
description = "How to unzip a .gz file in linux"
防止 shell 解釋 ; 分隔符,我們在它之前使用\。使用這種策略,我們只得到檢測到文字的行。
我們可以通過替換分隔符 ; 來獲取行以及找到它的檔名帶有+。
# !/bin/bash
find . -exec grep linux {} +
輸出:
./bash.sh:find . -exec grep linux {} \;
./bash.sh:find . -exec grep linux {} +
./unzip_gz_linux.txt:title = "Unzip .gz file in linux"
./unzip_gz_linux.txt:description = "How to unzip a .gz file in linux"
find 處理表示式結果的方式由分隔符決定。如果我們使用分號 ;,-exec 命令將獨立重複每個結果。
如果我們使用+ 符號,所有表示式的結果將被連線起來並提供給 -exec 命令,只執行一次。出於效能原因,我們更喜歡使用 + 分隔符。
        Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe