Grep 在找到所需文件后仅最后一行



嗨,伙计们,我有一个来自这个线程的扩展问题

我需要找到一些给定文件名的文件,并在这些文件的最后一行使用 grep 来查找某个字符串。

我目前有:

find my_dir/ -name "*filename*" | xargs grep 'lookingfor'

我是使用这些命令的新手,因此非常感谢您的帮助。提前谢谢你。

例如,您可以执行以下操作:

find my_dir/ -name "*filename*" -exec sh -c "tail -200 {} | grep lookingfor" ;

200设置为所需的最后行数。

我会选择

find  my_dir -name '*filename*' -type f 
     -exec /bin/bash -c '(tail -5 "$1" | grep -q lookingfor) && echo "$1"' _ {} ;

这样,您将正确处理所有(好吧,希望是所有:-))文件名,甚至是那些带有"和其他奇怪符号的文件名。此外,我建议明确调用/bin/bash,因为/bin/sh 可以链接到一个残缺的 sh 变体上,如 ashsashdash

使用 find + awk + wc -l

find  my_dir -name '*filename*' -type f -exec awk 'NR>count-100{print FILENAME, $0}' count=$(wc -l < {}) {} +

将 100 调整为所需的最后行数。

相关内容

  • 没有找到相关文章

最新更新