bash - 如何获取包含一种模式但不包含另一种模式的所有文件的列表?

标签 bash grep

我正在寻找一个 CLI,它会返回一个包含 foo 文本但不包含 bar 的文件列表。

请注意,我正在寻找一个可移植的解决方案,因此请记住 GNU 和非 GNU 版本的 awk/grep/... 之间的差异

如果可以通过单个命令完成,那就更好了。

最佳答案

您可以使用此find + awk 解决方案:

find . -maxdepth 1 -type f -exec \
awk '/foo/{m=1} /bar/{n=1} END{if (m && !n) print FILENAME}' {} \;

关于bash - 如何获取包含一种模式但不包含另一种模式的所有文件的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48909607/

相关文章:

linux - 在 Bash/Shell 脚本中使用 BuildTools 下载/构建 Minecraft 服务器 jar

linux - 如何将字符串中的所有 IP 地址放入 bash 数组

linux - 查找包含字符串的文件,但几个文件夹除外

linux - 如何使用grep捕获转义序列,例如终端颜色

linux - 创建一个 tshark bash 脚本来导出对象

Linux如何在脚本中查找所有可执行文件

linux - 从 bash 脚本创建的全局 bash 脚本别名

linux - 如何使用 grep 过滤管道信息并在找到单​​词时过滤所有信息

command-line - 从 grep 中删除行号选项

UNIX grep 命令(grep -v grep)