我在 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/