bash - 查找文件之一中不存在字符串的子目录

标签 bash

我在 Linux 中有一个包含很多子目录的目录。

每个子目录都包含一个名为variables_list.txt的文件

现在,在每个 variables_list.txt 文件中,我想检查字符串是否存在。

例如:

如果字符串如下所示

export host_name=

我想找出 variables_list.txt 文件中不存在该字符串的所有子目录。

我尝试过如下

grep -r -l "export host_name=" .

这将打印该字符串所在的所有文件名。

我也尝试过如下

grep -Hrn "export host_name=" 

这还会打印包含行号的字符串所在的所有文件名

我可以实现我想要的

最佳答案

您可以通过管道将 grep 结果传输到 dirname:

grep -v -Z -r -l "export host_name=" .  | xargs -0 dirname

示例:

$ mkdir {1..10}
$ mkdir 'test dir with space'
$ echo export host_name= >> 2/variables_list.txt
$ echo export host_name= > 3/variables_list.txt
$ echo export host_name= > 4/variables_list.txt
$ echo export host_name= > 5/variables_list.txt
$ echo export host_nname= > 'test dir with space'/variables_list.txt
$ echo export hostt_name= > 3/variables_list.txt
$ find . -name variables_list.txt -exec sh -c 'grep "export host_name=" "$1" >/dev/null || echo "$(dirname "$1")"' sh {} \;
./3
./test dir with space

关于bash - 查找文件之一中不存在字符串的子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60696559/

相关文章:

linux - Linux 终端中运行的命令输出到文本文件

linux - Bash 'date -d' 错误?

linux - 可在 Ubuntu 和 MacOsX 上运行的 bash 脚本

bash - awk 解析文件名并将结果添加到每行末尾

linux - 带有 getopts 的脚本不会为变量赋值

linux - 列出目录中每个文件的前几行

java - 如何执行 Bash 命令并收集 Java 的输出?

bash - 使用 shell 脚本将有符号整数转换为无符号整数

linux - linux bash 中的 $RANDOM 在启动时总是相同的

windows - 计划在 Windows 中运行 bash shell 脚本