如何找到除特定路径之外的所有文件路径?

时间:2013-09-06 19:14:54

标签: regex bash shell grep

我有filename.txt

中的文件列表
dir /etc/folder1
dir /usr/folder2

除了dir / usr / folder2之外,我需要检查文件中是否还有其他目录条目? 基本上,确保除了dir / usr / folder2之外没有其他条目,我尝试使用 但这甚至匹配dir / usr / folder2

 grep -E 'dir /[:alpha]*/*' /etc/filename.txt

有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

您无需提供正则表达式,只需传递-v(反向)标记

即可
grep -v 'dir /usr/folder2' filename.txt 

答案 1 :(得分:1)

这就是你想要的:

grep -P '^dir (?!/usr/folder2$)' filename.txt

这将打印以dir开头的所有行,其中包含指定文件夹以外的任何内容。

如果您只想查看是否有其他dir(不打印),请使用以下命令:

grep -qP -m 1 '^dir (?!/usr/folder2$)' filename.txt && echo 'There are other dirs' || echo 'There are no other dirs'

在这种情况下,您不需要输出,因此使用了-q。另请记住,如果找到至少一个匹配项,请使用-m 1停止阅读该文件。

答案 2 :(得分:1)

awk '$1=="dir" && $2!="/usr/folder2" {print}' filename.txt

grep ^dir filename.txt | grep -v /usr/folder2