Grep:没有命中时返回用户消息

时间:2011-06-13 23:18:07

标签: bash find grep

我有ASCII文件解析48小时或更长时间;我可以这样识别它们

find . -name "FILE*TXT"  -mtime +1 -exec ls -ltas '{}' ';' 

有些文件有硬件错误列表(我们测试电子元件),有些则没有。如果文件名没有错误,我仍然希望显示如此消息

    grep ^err R*VER && echo "No error"
FILEA.TXT:err   ->USB   3910    err 
FILED.TXT:err No Error

这个grep语句有效,但如果我同时运行两个语句,它似乎会覆盖上面的find()语句...如何组合这两个语句来创建一个列出文件名和错误的报告,如此

FILEA.TXT Button    3320    err
FILEB.TXT USB   3235    err
FILEC.TXT IR Remote 2436    err
FILED.TXT No error

是否可以在没有错误的情况下使用文件名返回“No error”?在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

如果命令返回失败,-exec谓词将返回false。

find ... \( -exec grep ... {} \; -o -printf "%p No error\n" \) ...

答案 1 :(得分:0)

一位朋友想出了这个

find . -name "FILE*TXT" -mtime +1 -exec sh -c 'grep -H ^err "{}" || echo "{}:No error"' \;

我无法弄清楚如何为每个文件运行grep;他的解决方案确实如此。

感谢您抽出宝贵时间。