我可以使用与整个文件匹配的 rexexp 来搜索文件吗?假设我有这些文件:
//file1
foo
bar
//file2
bar
foo
我想查找以“foo”结尾的文件。如果我使用grep
正则表达式foo$
,它将匹配两个文件,因为它们都有以“foo”结尾的行。但我只想匹配第二个文件,因为这是整个文件以“foo”结尾的唯一情况。
答案1
tail
您可以使用和的组合,grep
例如
find . -type f -exec sh -c 'tail -n1 "$1" | grep -q "foo"' sh {} \; -print
答案2
在 perl 中,0
可以使用选项将文件作为单个记录进行处理。
用这种方法尝试:
perl -n0E 'say $ARGV if /foo\s*$/' file*
\s*
有助于处理通常出现在文件末尾的新行和类似内容。
另一个类似的替代方案(gnugrep)
grep -lzP 'foo\Z' file*