在 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