我正在寻找一种快速的方法来搜索数千个日志文件以找到有错误的文件。对我来说不幸的是,只有那些成功完成的会被标记为“作业完成”这个词,而那些崩溃的不会包含这一行。
我将这些作业的确切名称存储为文件名。虽然执行以下操作很有用:
grep "Job Completed" * > completeJobs.txt
在我的日志目录中,我真的很想知道不包含此行的作业的文件名。
上面的 grep 命令是否有补充来解决我的问题?
谢谢阅读。
我正在寻找一种快速的方法来搜索数千个日志文件以找到有错误的文件。对我来说不幸的是,只有那些成功完成的会被标记为“作业完成”这个词,而那些崩溃的不会包含这一行。
我将这些作业的确切名称存储为文件名。虽然执行以下操作很有用:
grep "Job Completed" * > completeJobs.txt
在我的日志目录中,我真的很想知道不包含此行的作业的文件名。
上面的 grep 命令是否有补充来解决我的问题?
谢谢阅读。
你想要选项-L
:
抑制正常输出;而是打印通常不会打印输出的每个输入文件的名称。
grep -L 'Job Completed' * >../jobsNotCompleted
您可以使用 -v 开关来反转 grep 搜索。
grep -v "Job Completed" * > incompleteJobs.txt
只需尝试
grep -vl 'Job Completed' * > notCompletedJobs.txt
或者
grep -v 'Job Completed' * > notCompletedJobs.txt
根据您的需要
来自man grep
:
-v, --invert-match
反转匹配的感觉,选择不匹配的行。(-v 由 POSIX 指定。)
-l, --files-with-matches
抑制正常输出;而是打印通常会从中打印输出的每个输入文件的名称。扫描将在第一次匹配时停止。(-l 由 POSIX 指定。)
检查man
页面,您可以使用 -v 选项反转匹配
grep -v "Job Completed" * > uncompletedJobs.txt