Unix - 使用ls和grep

时间:2015-03-03 20:59:02

标签: unix

如何使用ls(或其他命令)和grep一起从特定文件中搜索该文件中的某个单词?

示例我有一个文件 - 201503003_315_file.txt,我的目录中还有其他文件。 我只想搜索文件名包含 _315 _ 的文件,并在该文件中搜索单词“SAMPLE”。

希望这是明确的,并提前感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

你可以这样做:

ls * _315_* | xargs grep "SAMPLE"

第一部分:ls * _315_*将仅列出 315 作为文件名的一部分的文件,此文件列表将通过管道传输给grep,扫描每一个并查找“SAMPLE”

<强>更新

大卫在下面的评论中提到了一种更简单(实际上更安全)的方法:

grep "SAMPLE" *_315_*.txt

更安全的原因是ls无法处理特殊字符。

另一种选择,正如Charles Duffy在下面的评论中提到的那样:

printf '%s\0' *_315_* | xargs -0 grep

答案 1 :(得分:-2)

更改到该目录(使用cd dir)并尝试:

grep SAMPLE *_315_*

如果你真的必须使用lsgrep试试这个:

ls *_315_* | xargs grep SAMPLE

然而,第一个例子需要更少的输入......