【发布时间】:2020-04-06 11:00:12
【问题描述】:
我有一个文本文件 - 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)。
我想查找与我的accessions.txt 文本文件中的任何行匹配的文件名 (*.align)。
我知道find . -exec grep -H 'STRING' {} + 可以查找特定的字符串(例如,用WP_088939404.1 替换字符串会返回字符串WP_088939404.1 所在的每个文件名)。
有没有办法将STRING 替换为“我的文本文件中的所有字符串”?
或者
还有其他(更好的)方法可以做到这一点吗?
我试图避免编写一个循环来读取我所有文件的内容,因为它们太多了。
非常感谢!
【问题讨论】:
-
除了循环之外没有更简单的方法 - 您可以尝试解析 string1 \| string2 等,其中 \|表示“或”,但您可以做的另一件事是使用 grep -m1 这意味着一旦找到匹配项,它将“停止”搜索。