在文件列表中搜索文本

在文件列表中搜索文本

我正在尝试在文件中执行双重搜索并返回文件名。

我在用着

find ./ -iname '*txt' | xargs grep "searchtext" -sl

查找包含“searchtext”的文件名。

命令正在返回文件列表。

我怎样才能在已经找到的文件中找到“othersearchtext”并以相同的方式显示它们?

答案1

grep使用反引号或等效的 $()将结果提供给另一个。

如果你想保留中间列表,请使用tee

grep -l oranges $(find . -name "*txt" | xargs grep -l apples | tee apples.txt)

答案2

您可以链接xargs grep …

find . -iname '*txt' | \
    xargs grep -l "searchtext" | \
    xargs grep -l "othersearchtext" | \
    xargs grep -l "yetanothersearchtext"

答案3

此 bash 将递归搜索给定文件夹中的多个字符串并返回文件名

用法:

findfiles /var/www/ php searchText1 searchText2 searchText3 searchText4

bash:查找文件

#!/bin/sh

DIR=$1
EXT=$2

CMD="find $DIR -iname '*.$EXT' | xargs grep -l '$3' | xargs grep -l '$4' | xargs grep -l '$5' | xargs grep -l '$6' | xargs grep -l '$7' | xargs grep -l '$8' | xargs grep -l '$9'"

eval $CMD

相关内容