嗨,伙计们,我有一个来自这个线程的扩展问题
我需要找到一些给定文件名的文件,并在这些文件的最后一行使用 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 变体上,如 ash
、sash
和 dash
。
使用 find + awk + wc -l
find my_dir -name '*filename*' -type f -exec awk 'NR>count-100{print FILENAME, $0}' count=$(wc -l < {}) {} +
将 100 调整为所需的最后行数。