linux - 从文本文件中查找内容与某行匹配的文件
问题描述
我有一个文本文件 - accessions.txt
(下面是这个文件的一个子集):
KRO94967.1
KRO95967.1
KRO96427.1
KRO94221.1
KRO94121.1
KRO94145.1
WP_088442850.1
WP_088252850.1
WP_088643726.1
WP_088739685.1
WP_088283155.1
WP_088939404.1
我有一个包含多个文件的目录(*.align
)。
我想找到*.align
内容与我的accessions.txt
文本文件中的任何行匹配的文件名 ()。
我知道这find . -exec grep -H 'STRING' {} +
可以找到特定的字符串(例如,将 STRING 替换为WP_088939404.1
返回字符串所在的每个文件名WP_088939404.1
)。
有没有办法STRING
用“我的文本文件中的所有字符串”替换?
或者
还有另一种(更好的)方法可以做到这一点吗?
我试图避免编写一个循环来读取我所有文件的内容,因为它们太多了。
非常感谢!
解决方案
grep
可以获取要匹配的模式列表-f
。
grep -lFf accessions.txt directory/*.align
-F
告诉 grep 将这些行解释为固定字符串,而不是正则表达式模式。
有时,-w
还需要防止匹配内部单词,例如
abcd
可能不仅匹配abcd
,还匹配xabcd
or abcdy
。有时,如果规则更复杂,则需要预处理输入列表以防止不必要的匹配。
推荐阅读
- javascript - 没有从 Runner 调用 for 循环中的邮递员 setNextRequest
- java - 如何使用来自外部客户端的异步进程?
- c - gcc中的Keil_at_相当于什么
- javascript - 如何使用引导日期选择器在您的应用程序中获取正确的日期格式?
- java - java.io.FileNotFoundException:(只读文件系统)Mac
- github - 通过 GitHub 仅在自定义域的子目录上运行 Jekyll
- vb.net - 当用户输入的值不在 00:00 和 23:59 之间时,我想显示错误,但我收到错误
- visual-studio - PUBLISH 按钮未出现在上下文菜单上
- c - C 中的函数仅在存在不相关行时才起作用
- reactjs - Redux 存储呈现倍数状态。正常吗?