我在txt文件中有一个关键字列表,如下所示:
keyword1
keyword2
keyword3
我需要为这些关键字搜索我的所有文件 - 除了HTML和CSS文件外。
我唯一需要知道的是关键字DON&#T; T出现在任何文件中。我不关心那些做什么或者他们在哪些文件。我只需要知道哪些关键字不在任何文件中。
我查找过的所有内容都会继续提供有关如何查找关键字并输出其所在文件的结果。我可以通过命令行,Perl或任何最简单的方式执行此操作完成它。
看起来这些命令应该用于查找不包含我的关键字的文件:
grep -L "foo" *
或
ack -L "foo" *
但我不知道如何从我的txt文件中提取关键字或如何使其搜索除.html或.css以外的所有文件
我在我的服务器上运行此操作,因此我并不太关心它的资源密集程度......
答案 0 :(得分:0)
由于您的描述不完整,我将假设以下内容:
现在这是一种快速而肮脏的方式:
#!/bin/bash
TMP=/tmp/filelist$$.txt
find . -type f | grep -v ".html$" | grep -v ".css$" > $TMP
## Note: if you are search only current fold but not subfolders,
## add "-maxdepth 1" option to "find" command
while read keyword; do
if [ `while read file; do \
cat "$file"; \
done < $TMP | grep -c "$keyword"` -eq 0 ]; then \
echo "$keyword does not appear in any files."; \
fi; \
done < ../keywordfile.txt
答案 1 :(得分:0)
试试这个:
#!/bin/bash
keywordlist=$(cat keywordfile.txt | tr "\n" "\|")
for x in $(find . ! -name "*.html" ! -name "*.css" -type f)
do
if ! grep -qE "(${keywordlist%"|"})" $x
then
echo $x
fi
done