繁体   English   中英

如何使用 bash 脚本查找目录的任何文件是否包含特定字符串?

[英]How to find whether any file of a directory contains a specific string using bash script?

我需要检查字符串M1039C28是否在目录/var/opt的任何文件中。
如果找到字符串,它应该回显true ;如果找不到字符串,则应该回显String not found found 。

样本:

cd /var/opt/;
if [ find ./ -type f -exec grep -Hni "M1039C28" {} ';']
then
    echo "String found"
else
    INFO "String not found"
fi

考虑将grep与选项-q (抑制任何输出)和-r (在目录中递归搜索)一起使用:

grep -qr "search-query" /path/to/dir && echo "FOUND" || echo "NOT FOUND"

如果在任何文件中找不到该字符串, grep将以代码1退出。 有关详细信息,请参阅手册页

为什么不基于此命令编写脚本:

grep -l "M1039C28" * | wc -l

如果结果为 0,则未找到该条目。
如果结果为 1 或更多,则找到该条目。

如果您有一个大目录并且想要递归搜索,请尝试使用silver 搜索器(如果尚未安装),您可以在 Debian 上使用sudo apt install silversearcher-ag或在 MacOS 上使用brew install the_silver_searcher 像这样使用它。

ag "M1039C28" path/to/search && echo "FOUND" || echo "NOT FOUND"

注意路径参数是可选的,默认情况下它递归搜索当前路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM