我有一个文件,其中包含文件名(以及它们的完整路径),我想在所有文件中搜索一个单词.一些伪代码来解释:
grep keyword
要么
cat files.txt > grep keyword cat files txt | grep keyword
问题是我只能通过grep来搜索文件名,而不是实际文件的内容.
cat files.txt | xargs grep keyword
要么
grep keyword `cat files.txt`
或(相当于以前但更难以阅读)
grep keyword $(cat files.txt)
应该做的伎俩.
陷阱:
如果files.txt包含带空格的文件名,则任何一种解决方案都会出现故障,因为"这是一个filename.txt"将被解释为四个文件,"This","is","a"和"filename.txt".你不应该在你的文件名中有空格的一个很好的理由.
有很多方法,但没有一个是微不足道的.(找到... -print0/xargs -0就是其中之一.)
第二个(cat)版本可能会导致命令行很长(超出环境限制时可能会失败).第一个(xargs)版本自动处理长输入; xargs提供了几个控制细节的选项.