我正在尝试在文件中执行双重搜索并返回文件名。
我在用着
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